2012-12-07 14 views
9

मेरे पास एक वेब व्यू है जिसमें मैं एक कस्टम लिंक (जैसे ऐप: // एक्शन) वाला एक पृष्ठ लोड करता हूं। मैंने मैनिफेस्ट फ़ाइल में यूआरएल योजनाएं पंजीकृत की हैं और जब मैं लिंक पर क्लिक करता हूं, तो मेरी गतिविधि की ऑनस्यूम() विधि को सही डेटा के साथ बुलाया जाता है और यह ठीक काम करता है।वेबव्यू (एंड्रॉइड) में यूआरएल लोड को कैसे रोकें?

मेरी समस्या यह है कि वेबव्यू अभी भी लिंक लोड करने का प्रयास करता है और मेरा वेब व्यू "वेब पेज अनुपलब्ध" संदेश दिखाने के लिए समाप्त होता है। मुझे वह नहीं चाहिए।

मैं वेबव्यू को यूआरएल लोड करने के लिए कैसे रोक सकता हूं?

WebView banner = ... 
banner.setWebViewClient(new WebViewClient() { 

    @Override 
    public void onLoadResource(WebView view, String url) { 

     if (url.startsWith("app://")) { 

      Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url), getContext(), Main.class); 
      //startActivity(i); 
     } 
    } 
} 

banner.loadUrl("url_to_the_banner"); 

उत्तर

22

उपयोग WebViewClient.shouldOverrideUrlLoading बजाय:

यहाँ मेरी कोड है।

public boolean shouldOverrideUrlLoading(WebView view, String url){ 
    // handle by yourself 
    return true; 
} 

WebViewClient Reference

अपडेट: विधि shouldOverrideUrlLoading(WebView, String) एपीआई स्तर 24. उपयोग shouldOverrideUrlLoading(WebView, WebResourceRequest) बजाय में मान्य नहीं है।

+0

लानत! मैं बस इसे रेफरी में याद किया! धन्यवाद दोस्त! – Alexis

6

लेकिन यह अन्यथा गलत लौटना चाहिए, इसलिए:

@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url){ 
    if(url.startsWith(myString){ 
     // handle by yourself 
     return true; 
    } 
    // ... 
    return false; 
} 
संबंधित मुद्दे