פתיחת כרטיסייה מותאמת אישית עבור קישורים ב-WebView

רכיבי WebView הם כלי מצוין לשילוב חלק של תוכן האינטרנט שלכם באפליקציה. כשהתוכן מאינטראקציה ישירה כולל קישורים לאתרים שאינם בבעלותכם, כדאי לפתוח אותם בכרטיסייה מותאמת אישית במקום ב-WebView. יש לכך שני יתרונות:

  1. יש להפריד באופן ברור בין חוויית המשתמש בתוכן האינטרנט של הצד הראשון לבין חוויית המשתמש בתוכן האינטרנט של הצד הראשון.
  2. אתרי אינטרנט של צד שלישי נהנים משיתוף קובצי 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));                            
        }
    }
});