Ouvrir un onglet personnalisé pour les liens dans une WebView

Les composants WebView sont parfaits pour intégrer parfaitement votre propre contenu Web dans votre application. Si 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 la 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. Les sites Web tiers bénéficient du partage de cookies avec le navigateur par défaut.

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