android - ইউআরএল ক্লিক করে ডিফল্ট ব্রাউজার খোলে




url android-webview (4)

আমি আমার ওয়েব WebView একটি বাহ্যিক URL লোড করেছি। এখন আমার যা দরকার তা হল যে যখন ব্যবহারকারী লোড পৃষ্ঠাটিতে লিঙ্কগুলিতে ক্লিক করে তখন এটি একটি স্বাভাবিক ব্রাউজারের মতো কাজ করতে হবে এবং একই ওয়েব WebView লিঙ্ক খুলতে হবে। কিন্তু এটি ডিফল্ট ব্রাউজার খুলছে এবং পৃষ্ঠা লোড হচ্ছে?

আমি জাভাস্ক্রিপ্ট সক্রিয় আছে। কিন্তু এখনও এটা কাজ করছে না। আমি কি কিছু ভুলে গেছি?


Arulx জেড এর উত্তর ঠিক কি আমি খুঁজছেন ছিল।

হাইপারলিঙ্কে ক্লিক না করেই ওয়েব ব্রাউজিং এপ্লিকেশনটির ভিতরে ওয়েব ব্রাউজিং রাখতে (যেমন বাহ্যিক ওয়েব ব্রাউজার চালু করা না) আমি নেভিগেশান ড্রয়ারে একটি অ্যাপ্লিকেশন লিখছি। এর জন্য নিম্নলিখিত কোডটি 2 টি লাইন রাখতে যথেষ্ট হবে:

mWebView.setWebChromeClient(new WebChromeClient()); mWebView.setWebViewClient(new WebViewClient());

ঠিক আপনার WebView বিবৃতি অধীনে।

আমার বাস্তবায়িত ওয়েব ভিউ কোডের একটি উদাহরণ এখানে দেওয়া হল:

public class WebView1 extends AppCompatActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    WebView wv = (WebView) findViewById(R.id.wv1); //webview statement
    wv.setWebViewClient(new WebViewClient());    //the lines of code added
    wv.setWebChromeClient(new WebChromeClient()); //same as above

    wv.loadUrl("http://www.google.com");
}}

এইভাবে, ওয়েবসাইটে ক্লিক করা প্রতিটি লিঙ্ক আপনার WebView ভিতরে লোড হবে। (সমস্ত এসডিকে আপডেট করে অ্যান্ড্রয়েড স্টুডিও 1.2.2 ব্যবহার করে)


অফিসিয়াল documentation বলছে, একটি ওয়েব ভিউ একটি লিঙ্ক ক্লিক করুন ইউআরএল পরিচালনা করে যে অ্যাপ্লিকেশন চালু হবে। আপনি এই ডিফল্ট আচরণ override করতে হবে

    myWebView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            return false;
        }
    });

অথবা যদি পদ্ধতিতে কোন শর্তযুক্ত যুক্তি নেই কেবল এই কাজ

myWebView.setWebViewClient(new WebViewClient());

আপনি যদি ওয়েব WebView ব্যবহার করেন তবে আপনি ডিফল্ট Android আচরণটি না চান তবে নিজেকে ক্লিকগুলি আটকে রাখতে হবে।

আপনি WebView WebViewClient ব্যবহার করে একটি ওয়েব WebViewClient ইভেন্টগুলির নিরীক্ষণ করতে পারেন। আপনি যে পদ্ধতিটি চান তা হল shouldOverrideUrlLoading() । এটি একটি নির্দিষ্ট URL নির্বাচন করা হয় যখন আপনি নিজের কর্ম সঞ্চালন করতে পারবেন।

আপনি setWebViewClient() পদ্ধতি ব্যবহার করে আপনার WebView WebViewClient সেট করেন।

আপনি যদি এসডিকে ওয়েব WebView নমুনাটি দেখেন তবে একটি উদাহরণ যা আপনি যা চান তা করে। এটা হিসাবে সহজ হিসাবে:

private class HelloWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
}

কিছু ক্ষেত্রে আপনাকে যদি অনুলিপি পেতে হয় তবে এটি লোড রিসোর্সের ওভাররাইডের প্রয়োজন হতে পারে যা ইউআরএল লোডিং পদ্ধতিটি ট্রিগার করে না। এই ক্ষেত্রে আমি নিম্নলিখিত চেষ্টা:

@Override
public void onLoadResource(WebView view, String url)
{
    if (url.equals("http://redirectexample.com"))
    {
        //do your own thing here
    }
    else
    {
        super.onLoadResource(view, url);
    }           
}






android-websettings