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

Kyl*_*yle 105 android android-webview android-browser

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

Amo*_*tir 182

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

来源(来自斯文)

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;
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果网址是相对的,(不是以"http://"开头),那么它将在应用内打开.为避免这种情况,请始终返回true并使相对url链接不执行任何操作. (7认同)
  • 这个答案对我帮助很大!谢谢! (3认同)
  • 您应该检查前缀中的其他协议,如rtsp,https等.如果链接旨在打开媒体,则应将其重定向到设备的媒体播放器.如果没有协议前缀,则识别并提供一个. (3认同)
  • 请注意,API 24中已弃用了“ shouldOverrideUrlLoading(WebView视图,字符串url)”。检查[this answer](http://stackoverflow.com/a/38484061/3752244)。 (2认同)

Cri*_*vez 32

WebView webview = (WebView) findViewById(R.id.webview);
webview.loadUrl(https://whatoplay.com/);
Run Code Online (Sandbox Code Playgroud)

你不必包含这段代码

// webview.setWebViewClient(new WebViewClient());
Run Code Online (Sandbox Code Playgroud)

相反,你需要使用下面的代码

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;
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

  • 这段代码真的帮助我解决了这个问题 (3认同)

Piy*_*ush 11

你可以使用Intent:

Intent browserIntent = new Intent("android.intent.action.VIEW", Uri.parse("your Url"));
startActivity(browserIntent);
Run Code Online (Sandbox Code Playgroud)

  • 你应该使用Intent.ACTION_VIEW (10认同)

小智 10

您只需添加以下行

yourWebViewName.setWebViewClient(new WebViewClient());
Run Code Online (Sandbox Code Playgroud)

请查看官方文档.


小智 6

您可以使用Intent:

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


归档时间:

查看次数:

97051 次

最近记录:

6 年,10 月 前