Các phần sau đây sẽ hướng dẫn bạn cách xác nhận xem trình duyệt mặc định hoặc bất kỳ trình duyệt nào trên thiết bị Android có hỗ trợ Thẻ tuỳ chỉnh hay không.
Kiểm tra xem trình duyệt mặc định có hỗ trợ Thẻ tuỳ chỉnh hay không
Để xác minh xem trình duyệt mặc định có hỗ trợ Thẻ tuỳ chỉnh hay không, hãy sử dụng phương thức trợ giúp getPackageName
trong CustomTabsClient
:
String packageName = CustomTabsClient.getPackageName(
context,
Collections.emptyList()
);
if (packageName == null) {
// Custom Tabs are not supported by the default browser
}
Kiểm tra xem có trình duyệt nào trên thiết bị hỗ trợ Thẻ tuỳ chỉnh hay không
Để xác minh xem có trình duyệt nào được cài đặt trên thiết bị hỗ trợ Thẻ tuỳ chỉnh hay không, bạn cần truy vấn các ứng dụng có thể xử lý ý định VIEW
, trích xuất tên gói và sử dụng phương thức trợ giúp getPackageName
trong 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
}
Thay đổi về chế độ hiển thị gói trong Android 11
Android 11 đã giới thiệu các thay đổi về chế độ hiển thị gói. Nếu ứng dụng Android của bạn nhắm đến API cấp 30 trở lên, bạn phải thêm nội dung khai báo sau đây vào phần truy vấn của AndroidManifest.xml
.
Nếu không có nội dung khai báo này, phương thức queryIntentActivities
sẽ không trả về kết quả:
<queries>
<intent>
<action android:name=
"android.support.customtabs.action.CustomTabsService" />
</intent>
</queries>
Không có trình duyệt nào trong thiết bị hỗ trợ Thẻ tuỳ chỉnh
Nếu không có trình duyệt nào hỗ trợ Thẻ tuỳ chỉnh trong thiết bị và bạn mở một URL bằng customTabsIntent.launchUrl(context, url)
, thì ý định đó có thể không thành công, dẫn đến ActivityNotFoundException
.
Luôn kiểm tra khả năng tương thích để đảm bảo trải nghiệm người dùng tốt hơn.
Bạn có thể sử dụng ACTION_VIEW
Ý định tiêu chuẩn để mở URL trong bất kỳ trình duyệt nào có sẵn.