WebViewリンクをクリックしてデフォルトのブラウザを開く


112

現在、ウェブビューをロードするアプリがあり、すべてのクリックはアプリ内に保持されます。アプリ内で特定のリンク(http://www.google.comなど)をクリックすると、デフォルトのブラウザーが開きます。誰かがいくつかのアイデアを持っている場合は教えてください!

回答:


193

私は今日同じことをしなければならなかった、そして誰かがそれを必要とする場合に備えてここで共有したい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;
        }
    }
});

3
この答えは私を大いに助けてくれました!ありがとう!
Android-Droid、2011

7
URLが相対である場合(「http://」で始まっていない場合)、アプリ内で開かれることに注意してください。これを回避するには、常にtrueを返し、相対URLリンクが何もしないようにします。
ヨハンS

3
rtsp、httpsなどのプレフィックスで他のプロトコルを確認する必要があります。リンクがメディアを開くことを目的としている場合は、デバイスのメディアプレーヤーにリダイレクトする必要があります。プロトコル接頭辞がない場合は、識別して提供します。
Abhinav Saxena

正確に、私が探しているもの。ありがとう
Sudarshan 2016

2
shouldOverrideUrlLoading(WebView view, String url)はAPI 24で廃止されていることに注意してください。この回答を確認してください。
マテウスゴンディム2017年

35
WebView webview = (WebView) findViewById(R.id.webview);
webview.loadUrl(https://whatoplay.com/);

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

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

代わりに、以下のdコードを使用する必要があります

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

11

これにはIntentを使用できます。

Intent browserIntent = new Intent("android.intent.action.VIEW", Uri.parse("your Url"));
startActivity(browserIntent);

11
Intent.ACTION_VIEW
rajh2504

10

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

yourWebViewName.setWebViewClient(new WebViewClient());

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


6

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

Uri uriUrl = Uri.parse("http://www.google.com/"); 
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);  
startActivity(launchBrowser);  
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.