مكوّنات WebView رائعة لدمج محتوى الويب الخاص بك في تطبيقك بسلاسة. عندما يتضمّن محتوى الطرف الأول روابط لمواقع إلكترونية لا تملكها، من المنطقي فتح هذه الروابط في علامة تبويب مخصّصة بدلاً من WebView. وهذا له فائدتان:
- يتم فصل تجربة المستخدم للطرف الأول بوضوح عن تجربة المستخدم لمحتوى الويب التابع لجهة خارجية.
- تستفيد المواقع الإلكترونية التابعة لجهات خارجية من ملفات تعريف الارتباط التي تتم مشاركتها مع المتصفح التلقائي.
لتنفيذ ذلك، يجب ضبط معالج 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);
}
}
});