在 WebView 中打开链接的自定义标签页

WebView 非常适合将自己的 Web 内容无缝集成到您的应用中。如果您的第一方内容包含指向不归您所有的网站的链接,那么不妨在自定义标签页中打开这些内容,而不是在 WebView 中打开。这样做有两个好处:

  1. 第一方用户体验与第三方 Web 内容用户体验明显分开。
  2. 第三方网站可通过与默认浏览器共享 Cookie 来受益。

为实现这一点,请在 WebViewClient 中配置自定义 onLoadResource 处理程序:

WebView webView = (WebView)findViewById(R.id.webview);
webView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        return true;
    }

    @Override
    public void onLoadResource(WebView view, String url) {
        if (url.startsWith("http://www.my-own-domain.com")) {
            //Handle Internal Link...
        } else {
            //Open Link in a Custom Tab
            Uri uri = Uri.parse(url);
            new CustomTabsIntent.Builder()
                  .build()
                  .launchUrl(context, uri));                            
        }
    }
});