Bir Android cihazda Özel Sekmeler'i destekleyen bir tarayıcı olup olmadığını kontrol etme

Aşağıdaki bölümlerde, Android cihazdaki varsayılan tarayıcının veya herhangi bir tarayıcının Özel Sekmeler'i destekleyip desteklemediğini nasıl onaylayacağınız gösterilmektedir.

Varsayılan tarayıcının Özel Sekmeler'i destekleyip desteklemediğini kontrol etme

Varsayılan tarayıcının Özel Sekmeler'i destekleyip desteklemediğini doğrulamak için CustomTabsClient'daki getPackageName yardımcı yöntemini kullanın:

String packageName = CustomTabsClient.getPackageName(
        context,
        Collections.emptyList()
);
if (packageName == null) {
    // Custom Tabs are not supported by the default browser
}

Cihazdaki tarayıcıların Özel Sekmeler'i destekleyip desteklemediğini kontrol edin

Cihaza yüklenen tarayıcıların Özel Sekmeler'i destekleyip desteklemediğini doğrulamak için VIEW intent'lerini işleyebilecek uygulamaları sorgulamak, paket adlarını ayıklamak ve CustomTabsClient'deki getPackageName yardımcı yöntemini kullanmanız gerekir:

// Get all apps that can handle VIEW intents and Custom Tab service connections.
Intent activityIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.example.com"));
PackageManager packageManager = context.getPackageManager();
List<ResolveInfo> resolveInfos = packageManager.queryIntentActivities(activityIntent, PackageManager.MATCH_ALL);

// Extract package names from ResolveInfo objects
List<String> packageNames = new ArrayList<>();
for (ResolveInfo info : resolveInfos) {
    packageNames.add(info.activityInfo.packageName);
}

// Get a package that supports Custom Tabs
String packageName = CustomTabsClient.getPackageName(
        context,
        packageNames,
        true /* ignore default */
);
if (packageName == null) {
    // Custom Tabs are not supported by any browser on the device
}

Android 11'de paket görünürlüğüyle ilgili değişiklikler

Android 11'de paket görünürlüğüyle ilgili değişiklikler yapıldı. Android uygulamanız API düzeyi 30 veya sonraki sürümleri hedefliyorsa AndroidManifest.xml dosyasının sorgu bölümüne aşağıdaki beyanı eklemeniz gerekir.

Bu beyan olmadan queryIntentActivities yöntemi sonuç döndürmez:

<queries>
    <intent>
        <action android:name=
            "android.support.customtabs.action.CustomTabsService" />
    </intent>
</queries>

Cihazdaki hiçbir tarayıcı Özel Sekmeler'i desteklemiyor

Cihazınızda Özel Sekmeler'i destekleyen bir tarayıcı yoksa ve customTabsIntent.launchUrl(context, url) kullanarak bir URL'yi başlatırsanız intent başarısız olabilir ve ActivityNotFoundException hatası gösterilebilir.

Daha iyi bir kullanıcı deneyimi sağlamak için her zaman uyumluluk kontrolü yapın.

URL'yi mevcut herhangi bir tarayıcıda açmak için standart bir ACTION_VIEW Intent'e geçebilirsiniz.