WebView链接单击打开默认浏览器


112

现在,我有一个加载Web视图的应用程序,所有点击都保留在该应用程序中。我想做的是,在应用程序中单击某个链接(例如http://www.google.com)时,它将打开默认浏览器。如果有人有任何想法,请告诉我!

Answers:


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

7
请注意,如果该网址是相对网址(不以“ http://”开头),则它将在应用内打开。为了避免这种情况,请始终返回true,并使相对的url链接无效。
Johan S

3
您应检查前缀中的其他协议,例如rtsp,https等。如果链接旨在打开媒体,则应将其重定向到设备的媒体播放器。如果没有协议前缀,请标识并提供一个。
Abhinav Saxena

确切,我在搜索什么。谢谢
Sudarshan

2
请注意,shouldOverrideUrlLoading(WebView view, String url)API 24中已弃用。请检查此答案
Mateus Gondim '17

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
11

10

您只需要添加以下行

yourWebViewName.setWebViewClient(new WebViewClient());

检查以获得官方文档。


6

您可以为此使用Intent:

Uri uriUrl = Uri.parse("http://www.google.com/"); 
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);  
startActivity(launchBrowser);  
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.