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

Posted

技术标签:

【中文标题】WebView 链接点击打开默认浏览器【英文标题】:WebView link click open default browser 【发布时间】:2011-05-12 21:13:47 【问题描述】:

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

【问题讨论】:

【参考方案1】:

由于这是有关 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
        
    

【讨论】:

【参考方案2】:
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;
    
  
);

【讨论】:

【参考方案3】:

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

Source(来自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;
        
    
);

【讨论】:

这个答案对我帮助很大!谢谢! 请注意,如果 url 是相对的(不以“http://”开头),那么它将在应用程序内打开。为了避免这种情况,总是返回 true 并使相对 url 链接什么都不做。 您应该检查前缀中的其他协议,例如 rtsp、https 等。如果链接旨在打开媒体,则应将其重定向到设备的媒体播放器。如果没有协议前缀,则识别并提供一个。 确切地说,我正在搜索。谢谢 请注意 shouldOverrideUrlLoading(WebView view, String url) 在 API 24 中已弃用。请检查 this answer。【参考方案4】:

您只需要添加以下行

yourWebViewName.setWebViewClient(new WebViewClient());

查看this 获取官方文档。

【讨论】:

【参考方案5】:

您可以为此使用 Intent:

Uri uriUrl = Uri.parse("http://www.google.com/"); 
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);  
startActivity(launchBrowser);  

【讨论】:

【参考方案6】:

您可以为此使用 Intent:

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

【讨论】:

你应该使用 Intent.ACTION_VIEW

以上是关于WebView 链接点击打开默认浏览器的主要内容,如果未能解决你的问题,请参考以下文章

Android WebView

vb webbrowser 点击链接怎么打开默认浏览器

使用 android webview 在浏览器中打开外部链接

让我开发的应用程序浏览器被识别为“默认打开”android功能

微信点击链接或者扫描二维码通过默认浏览器打开指定链接是如何实现的

关于在VB webbrowser中点击链接 新打开默认浏览器