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.