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.