android - यूआरएल पर क्लिक करने से डिफ़ॉल्ट ब्राउज़र खुलता है




url android-webview (4)

Arulx जेड का जवाब बिल्कुल वही था जो मैं खोज रहा था।

मैं हाइपरलिंक्स पर क्लिक किए बिना ऐप के अंदर वेब ब्राउजिंग को रखने के लिए रीसाइक्लिंग और वेबव्यू के साथ नेविगेशन ड्रॉवर के साथ एक ऐप लिख रहा हूं (इस प्रकार बाहरी वेब ब्राउज़र लॉन्च नहीं कर रहा है)। इसके लिए कोड की निम्नलिखित 2 पंक्तियां डालने के लिए पर्याप्त होगा:

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

बिल्कुल अपने वेब व्यू कथन के तहत।

यहां मेरे कार्यान्वित वेब व्यू कोड का एक उदाहरण दिया गया है:

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");
}}

इस तरह, वेबसाइट पर क्लिक किया गया प्रत्येक लिंक आपके वेब व्यू के अंदर लोड होगा। (सभी एसडीके अपडेट के साथ एंड्रॉइड स्टूडियो 1.2.2 का उपयोग करना)

मैंने अपने WebView में एक बाहरी यूआरएल लोड किया है। अब मुझे जो चाहिए वह यह है कि जब उपयोगकर्ता लोड किए गए पेज पर दिए गए लिंक पर क्लिक करता है, तो उसे एक सामान्य ब्राउज़र की तरह काम करना होगा और उसी WebView में लिंक खोलना होगा। लेकिन यह डिफ़ॉल्ट ब्राउज़र खोल रहा है और वहां पृष्ठ लोड कर रहा है?

मैंने जावास्क्रिप्ट सक्षम किया है। लेकिन फिर भी यह काम नहीं कर रहा है। क्या मैं कुछ भूल गया हूँ?


अपने कोड में यह 2 लाइनें जोड़ें -

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

कुछ मामलों में आपको ऑनलोड लोडसोर्स की ओवरराइड की आवश्यकता हो सकती है यदि आपको रीडायरेक्ट मिलता है जो यूआरएल लोडिंग विधि को ट्रिगर नहीं करता है। इस मामले में मैंने निम्नलिखित कोशिश की:

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

यदि आप WebView का उपयोग कर रहे हैं तो आपको डिफ़ॉल्ट रूप से क्लिक को अवरुद्ध करना होगा यदि आप डिफ़ॉल्ट एंड्रॉइड व्यवहार नहीं चाहते हैं।

आप WebViewClient का उपयोग कर WebView में ईवेंट की निगरानी कर सकते हैं। जिस विधि को आप चाहते हैं वह है shouldOverrideUrlLoading() । यह आपको एक विशेष यूआरएल चुना जाता है जब आप अपनी खुद की कार्रवाई करने की अनुमति देता है।

आप setWebViewClient() विधि का उपयोग कर अपने WebView WebViewClient के WebViewClient को सेट करते हैं।

यदि आप एसडीके में WebView नमूना देखते हैं तो एक उदाहरण है जो आप चाहते हैं। यह उतना आसान है जितना:

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




android-websettings