Ouvrir un onglet personnalisé pour les liens dans une WebView

Les WebViews sont idéales pour intégrer parfaitement votre propre contenu Web dans votre application. Lorsque votre contenu propriétaire inclut des liens vers des sites Web qui ne vous appartiennent pas, il peut être judicieux de les ouvrir dans un onglet personnalisé plutôt que dans WebView. Cela présente deux avantages:

  1. L'expérience utilisateur propriétaire est clairement séparée de l'expérience utilisateur du contenu Web tiers.
  2. Le partage de cookies avec le navigateur par défaut permet aux sites Web tiers de bénéficier de ces avantages.

Pour implémenter cela, configurez un gestionnaire onLoadResource personnalisé dans votre 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);                            
        }
    }
});