פתיחת כרטיסייה מותאמת אישית עבור קישורים ב-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);                            
        }
    }
});