רכיבי WebView הם כלי מצוין לשילוב חלק של תוכן האינטרנט שלכם באפליקציה. כשהתוכן מאינטראקציה ישירה כולל קישורים לאתרים שאינם בבעלותכם, כדאי לפתוח אותם בכרטיסייה מותאמת אישית במקום ב-WebView. יש לכך שני יתרונות:
- יש להפריד באופן ברור בין חוויית המשתמש בתוכן האינטרנט של הצד הראשון לבין חוויית המשתמש בתוכן האינטרנט של הצד הראשון.
- אתרי אינטרנט של צד שלישי נהנים משיתוף קובצי cookie עם דפדפן ברירת המחדל.
כדי להטמיע זאת, יש להגדיר handler בהתאמה אישית של onLoadResource
ב-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);
}
}
});