Bagian berikut menunjukkan cara mengonfirmasi apakah browser default atau browser apa pun di perangkat Android mendukung Tab Kustom.
Memeriksa apakah browser default mendukung Tab Kustom
Untuk memverifikasi apakah browser default mendukung Tab Kustom, gunakan metode bantuan getPackageName
di CustomTabsClient
:
String packageName = CustomTabsClient.getPackageName( context, Collections.emptyList() ); if (packageName == null) { // Custom Tabs are not supported by the default browser }
Memeriksa apakah ada browser di perangkat yang mendukung Tab Khusus
Untuk memverifikasi apakah browser yang diinstal di perangkat mendukung Tab Khusus, Anda perlu mengkueri aplikasi yang dapat menangani intent VIEW
, mengekstrak nama paketnya, dan menggunakan metode bantuan getPackageName
di CustomTabsClient
:
// 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 }
Perubahan visibilitas paket Android 11
Android 11 telah memperkenalkan perubahan visibilitas paket. Jika aplikasi Android Anda menargetkan API level 30 atau yang lebih baru, Anda harus menambahkan deklarasi berikut di bagian kueri AndroidManifest.xml
.
Tanpa deklarasi ini, metode queryIntentActivities
tidak akan menampilkan hasil:
<queries> <intent> <action android:name= "android.support.customtabs.action.CustomTabsService" /> </intent> </queries>
Tidak ada browser di perangkat yang mendukung Tab Khusus
Jika tidak ada browser yang mendukung Tab Khusus yang tersedia di perangkat dan Anda meluncurkan URL menggunakan customTabsIntent.launchUrl(context, url)
, intent mungkin gagal, yang menyebabkan ActivityNotFoundException
.
Selalu lakukan pemeriksaan kompatibilitas untuk memastikan pengalaman pengguna yang lebih baik.
Anda dapat kembali ke Intent ACTION_VIEW
standar untuk membuka URL di browser yang tersedia.