Benutzerdefinierten Tab für Links in einem WebView öffnen

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

  1. Die Nutzererfahrung mit selbst erhobenen Daten unterscheidet sich deutlich von der Nutzererfahrung mit Drittanbieter-Webinhalten.
  2. Drittanbieter-Websites profitieren davon, dass Cookies mit dem Standardbrowser geteilt 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));                            
        }
    }
});