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

Android WebView链接单击打开默认浏览器,android,android-webview,android-browser,Android,Android Webview,Android Browser,现在我有一个应用程序可以加载网络视图,所有的点击都保存在这个应用程序中。我想做的是,例如,当在应用程序中单击某个链接时,它会打开默认浏览器。如果有人有什么想法,请告诉我 您可以使用Intent来实现以下目的: Intent browserIntent = new Intent("android.intent.action.VIEW", Uri.parse("your Url")); startActivity(browserIntent); Uri uriUrl = Uri.parse("ht

现在我有一个应用程序可以加载网络视图,所有的点击都保存在这个应用程序中。我想做的是,例如,当在应用程序中单击某个链接时,它会打开默认浏览器。如果有人有什么想法,请告诉我

您可以使用Intent来实现以下目的:

Intent browserIntent = new Intent("android.intent.action.VIEW", Uri.parse("your Url"));
startActivity(browserIntent);
Uri uriUrl = Uri.parse("http://www.google.com/"); 
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);  
startActivity(launchBrowser);  

我今天也做了同样的事情,我在StackOverflow上找到了一个非常有用的答案,我想在这里分享,以防其他人需要它

(来自)


您可以为此使用意图:

Intent browserIntent = new Intent("android.intent.action.VIEW", Uri.parse("your Url"));
startActivity(browserIntent);
Uri uriUrl = Uri.parse("http://www.google.com/"); 
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);  
startActivity(launchBrowser);  
您不必包含此代码

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

您只需要添加以下行

yourWebViewName.setWebViewClient(new WebViewClient());

查看官方文档。

由于这是WebView中有关外部重定向的首要问题之一,因此这里有一个关于Kotlin的“现代”解决方案:

webView.webViewClient = object : WebViewClient() {
        override fun shouldOverrideUrlLoading(
            view: WebView?,
            request: WebResourceRequest?
        ): Boolean {
            val url = request?.url ?: return false
            //you can do checks here e.g. url.host equals to target one
            startActivity(Intent(Intent.ACTION_VIEW, url))
            return true
        }
    }

你应该使用Intent.ACTION\u view这个答案对我帮助很大!谢谢请注意,如果url是相对的(不是以“http://”开头),那么它将在应用程序内部打开。为了避免这种情况,请始终返回true并使相对url链接不起任何作用。您应该检查前缀中的其他协议,如rtsp、https等。如果链接旨在打开媒体,则应将其重定向到设备的媒体播放器。如果没有协议前缀,那么确定并提供一个。确切地说,我正在搜索的内容。感谢API 24中不推荐使用
应覆盖url加载(WebView视图,字符串url)
。检查。