127

現在、webview を読み込むアプリがあり、すべてのクリックはアプリ内に保持されます。私がやりたいのは、アプリ内で特定のリンク、たとえばhttp://www.google.comをクリックすると、デフォルトのブラウザーが開くことです。誰かアイデアがあれば教えてください!

4

6 に答える 6

211

今日も同じことをしなければなりませんでしたが、StackOverflow で非常に役立つ回答を見つけました。他の誰かがそれを必要とする場合に備えて、ここで共有したいと思います。

ソース( svenから)

webView.setWebViewClient(new WebViewClient(){
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url != null && (url.startsWith("http://") || url.startsWith("https://"))) {
            view.getContext().startActivity(
                new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
            return true;
        } else {
            return false;
        }
    }
});
于 2011-06-14T13:01:01.140 に答える
39
WebView webview = (WebView) findViewById(R.id.webview);
webview.loadUrl(https://whatoplay.com/);

このコードを含める必要はありません。

// webview.setWebViewClient(new WebViewClient());

代わりに以下のコードを使用してください。

webview.setWebViewClient(new WebViewClient()
{
  public boolean shouldOverrideUrlLoading(WebView view, String url)
  {
    String url2="https://whatoplay.com/";
     // all links  with in ur site will be open inside the webview 
     //links that start ur domain example(http://www.example.com/)
    if (url != null && url.startsWith(url2)){
      return false;
    } 
     // all links that points outside the site will be open in a normal android browser
    else
    {
      view.getContext().startActivity(
      new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
      return true;
    }
  }
});
于 2013-09-25T08:32:47.607 に答える
14

次の行を追加するだけです

yourWebViewName.setWebViewClient(new WebViewClient());

公式ドキュメントについては、これを確認してください。

于 2015-03-09T00:18:34.160 に答える
11

これにはインテントを使用できます:

Intent browserIntent = new Intent("android.intent.action.VIEW", Uri.parse("your Url"));
startActivity(browserIntent);
于 2010-11-20T04:42:22.803 に答える
6

これにはインテントを使用できます。

Uri uriUrl = Uri.parse("http://www.google.com/"); 
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);  
startActivity(launchBrowser);  
于 2012-05-10T06:44:25.333 に答える