WebView は、独自のウェブ コンテンツをアプリにシームレスに統合する場合に最適です。ファーストパーティ コンテンツに自身が所有していないウェブサイトへのリンクが含まれている場合は、WebView ではなくカスタムタブでそれらを開くのが合理的です。これには、次の 2 つの利点があります。
- ファースト パーティの UX は、サードパーティのウェブ コンテンツの UX とは明確に別物です。
- サードパーティのウェブサイトは、Cookie をデフォルトのブラウザと共有することでメリットを得られます。
これを実装するには、WebViewClient
でカスタムの onLoadResource
ハンドラを設定します。
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);
}
}
});