2013-08-01 51 views
19

Bu kodu kullanıyorum, fakat işe yaramıyor, web görünümünde açılmaya devam ediyor ve ne istediğim linkler web siteme ait değil, varsayılan tarayıcınızda açık. Herhangi bir fikir? teşekkürlerAndroid webview ile tarayıcıda harici bağlantılar açın

private class CustomWebViewClient extends WebViewClient { 
     @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       if(url.contains("message2space.es.vu")){ 
       view.loadUrl(url); 
       return true; 
      }else{ 
       return super.shouldOverrideUrlLoading(view, url); 
      } 

      } 
     } 

cevap

61

sorun bağlantıyı açmak için varsayılan web tarayıcısı bir Intent göndermek gerekir olduğunu. Yaptığınız şey, bağlantıyı ele almak için Web görünümünüzde farklı bir yöntem arıyor. Başka bir uygulama istediğinde bir şeyle ilgilenmek için Intents kullanmanız gerekir. Bunun yerine bu kodu deneyin. İşte

private class CustomWebViewClient extends WebViewClient { 
     @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       if(url.contains("message2space.es.vu")) { 
       view.loadUrl(url); 
       } else { 
       Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
       startActivity(i); 
       } 
       return true; 
      } 
     } 
+0

biz Webview linklere uzun tıklama işleyicisi olabilir mi? – TheOnlyAnil

+0

Şimdi bunu yaptım. Ancak uygulama bazı ActivityNotFoundException nedeniyle çöküyor. – superUser

+0

@superUser Kendi sorunuzu açmalısınız. – onit

3

.. çok tatlı ve kısa çözüm çok basit bir çözüm var Aşağıda

@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
    context.startActivity(i); 
    return true; 
} 
0

olduğunu

Example.to yük Web görünümündeki facebook.com'da ve tarayıcıda diğer tüm url için

->

- Kurulum onCreate

webView.loadUrl("http://m.facebook.com"); 
    webView.setWebViewClient(new MyAppWebViewClient()); 

bir İç Class olun ..

public class MyAppWebViewClient 24 shouldOverrideUrlLoading(WebView view, String url) kullanımdan kaldırıldı API düzeyinde yana WebViewClient {

// handling external links as intents 
@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url) { 

    if(Uri.parse(url).getHost().endsWith("facebook.com")) { 
     return false; 
    } 

    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
    view.getContext().startActivity(intent); 
    return true; 
} 

}

2

uzanır. tarih çözümüne kadar

:

webView.setWebViewClient(new WebViewClient() { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { 
      Intent intent = new Intent(Intent.ACTION_VIEW, request.getUrl()); 
      view.getContext().startActivity(intent); 
      return true; 
     } 
    }); 
İlgili konular