如何在默认浏览器中打开外部 URL 并在 WebView Android 中打开所有内部链接?

How to open external URL in default browser and all internal links in WebView Android?

我在我的页面中使用 WebView 并使用本地文件 assetsWebView 中显示,但在主 HTML 页面外部网站(非本地)和我只想在用户设备的默认浏览器中打开 link

这是我在 'onCreate' 方法中的代码

WebView v;

v=(WebView) rootView.findViewById(R.id.webView1);
v.getSettings().setJavaScriptEnabled(true);
WebViewClient vc= new WebViewClient();
v.setWebViewClient(vc);
v.loadUrl("file:///android_asset/home.html");

当我 运行 应用程序时,内部 link 运行良好,但外部 link "www.apple.com" 在网络视图中

我搜索了同样的问题并找到了这个解决方案,但仍然是外部 link 在 WebView 中打开

WebView webView = (WebView) rootView.findViewById(R.id.webView1);
webView.setWebViewClient(new MyWebViewClient());
String url = "file:///android_asset/home.html";
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);

和class

class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if(url.contains("http")){ // Could be cleverer and use a regex
            return super.shouldOverrideUrlLoading(view, url); // Leave webview and use browser
        } else {
            view.loadUrl(url); // Stay within this webview and load url
            return true;
        }
    }
}

改变

  if (url.contains("http")) { // Could be cleverer and use a regex
    return super.shouldOverrideUrlLoading(view, url); // Leave webview and use browser
  } else {
    view.loadUrl(url); // Stay within this webview and load url
    return true;
  }

 if (url.contains("http")) { // Could be cleverer and use a regex
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    mContext.startActivity(intent);
    return true;
 }
 return false;

注意:将 mContext 替换为您的 activity 上下文。