Benutzerdefinierten Tab für Links in einem WebView öffnen

WebViews eignen sich hervorragend zur nahtlosen Integration Ihrer eigenen Webinhalte in Ihre App. Wenn Ihre eigenen Inhalte Links zu Websites enthalten, die nicht Ihnen gehören, kann es sinnvoll sein, diese auf einem benutzerdefinierten Tab statt in WebView zu öffnen. Dies hat zwei Vorteile:

  1. Die Erstanbieter-UX ist klar von der UX der Drittanbieter-Webinhalte getrennt.
  2. Websites von Drittanbietern profitieren davon, dass Cookies für den Standardbrowser freigegeben werden.

Konfigurieren Sie einen benutzerdefinierten onLoadResource-Handler in Ihrer WebViewClient, um dies zu implementieren:

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