2013-08-01 21 views
19

私はこのコードを持っていますが、それは動作していないので、webviewで開いていて、私の望むのは、リンクがデフォルトのブラウザで開いているWebサイトに属していないということです。何か案が?おかげブラウザで外部リンクを開き、android webview

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

      } 
     } 

答えて

61

問題は、あなたがリンクを開くためのデフォルトのWebブラウザにIntentを送信する必要があります。あなたがやっていることは、Webviewで別のメソッドを呼び出してリンクを処理することです。別のアプリに何かを処理させたい場合は、インテントを使用する必要があります。代わりにこのコードを試してください。私は非常にシンプルなソリューションを持っている以下

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

たちはWebViewのリンク上の長いクリックリスナーを持つことができますか? – TheOnlyAnil

+0

これをやりました。しかし、いくつかのActivityNotFoundExceptionが原因でアプリがクラッシュします。 – superUser

+0

@superUserあなた自身の質問を開くべきです。 – onit

3
ここ

は非常に甘いと短いソリューションです

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

..

Example.to負荷のWebView上facebook.comと、ブラウザ内の他のすべてのurlに - >

- セットアップのonCreate

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

は、APIレベル24 shouldOverrideUrlLoading(WebView view, String url)は推奨されているので、内部クラス..

パブリッククラスMyAppWebViewClientが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

を拡張します。日付ソリューションまで

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; 
     } 
    }); 
関連する問題