فتح علامة تبويب مخصصة للروابط في WebView

مكوّنات WebView رائعة لدمج محتوى الويب الخاص بك في تطبيقك بسلاسة. عندما يتضمّن محتوى الطرف الأول روابط لمواقع إلكترونية لا تملكها، من المنطقي فتح هذه الروابط في علامة تبويب مخصّصة بدلاً من WebView. وهذا له فائدتان:

  1. يتم فصل تجربة المستخدم للطرف الأول بوضوح عن تجربة المستخدم لمحتوى الويب التابع لجهة خارجية.
  2. تستفيد المواقع الإلكترونية التابعة لجهات خارجية من ملفات تعريف الارتباط التي تتم مشاركتها مع المتصفح التلقائي.

لتنفيذ ذلك، يجب ضبط معالج 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));                            
        }
    }
});