Aprire una scheda personalizzata per i link in una WebView

I componenti WebView sono ideali per integrare perfettamente i tuoi contenuti web nella tua app. Se i tuoi contenuti proprietari includono link a siti web non di tua proprietà, può essere sensato aprirli in una scheda personalizzata anziché nella WebView. Questo comporta due vantaggi:

  1. L'esperienza utente proprietaria è chiaramente separata dall'esperienza utente dei contenuti web di terze parti.
  2. I siti web di terze parti traggono vantaggio dalla condivisione dei cookie con il browser predefinito.

Per implementarlo, configura un gestore onLoadResource personalizzato in WebViewClient:

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