بررسی کنید که آیا یک دستگاه Android دارای مرورگری است که از تب های سفارشی پشتیبانی می کند

بخش‌های زیر به شما نشان می‌دهند که چگونه می‌توانید وضعیت آب و هوا را تأیید کنید که مرورگر پیش‌فرض یا هر مرورگری در دستگاه Android از Tabs سفارشی پشتیبانی می‌کند.

بررسی کنید که آیا مرورگر پیش‌فرض از برگه‌های سفارشی پشتیبانی می‌کند یا خیر

برای تأیید اینکه آیا مرورگر پیش‌فرض از Tabs پشتیبانی می‌کند، از روش کمکی getPackageName در CustomTabsClient استفاده کنید:

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

بررسی کنید که آیا مرورگر دستگاه از تب های سفارشی پشتیبانی می کند یا خیر

برای تأیید اینکه آیا هر مرورگر نصب شده روی دستگاه از Tabs پشتیبانی می‌کند، باید برنامه‌هایی را که می‌توانند مقاصد VIEW مدیریت کنند، استخراج نام بسته‌ها و استفاده از روش کمکی getPackageName در 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
}

تغییر نمایان بودن بسته اندروید 11

اندروید 11 تغییرات دید بسته را معرفی کرده است. اگر برنامه Android شما سطح API 30 یا بالاتر را هدف قرار می دهد، باید اعلان زیر را در بخش جستجوهای AndroidManifest.xml اضافه کنید.

بدون این اعلان، متد queryIntentActivities نتایجی را بر نمی‌گرداند:

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

هیچ مرورگری در دستگاه از برگه‌های سفارشی پشتیبانی نمی‌کند

اگر هیچ مرورگری که از برگه‌های سفارشی پشتیبانی می‌کند در دستگاه موجود نباشد و شما یک URL را با استفاده از customTabsIntent.launchUrl(context, url) راه‌اندازی کنید، ممکن است این هدف با شکست مواجه شود و منجر به ActivityNotFoundException شود.

برای اطمینان از تجربه کاربری بهتر، همیشه یک بررسی سازگاری انجام دهید.

برای باز کردن URL در هر مرورگر موجود، می‌توانید به یک هدف استاندارد ACTION_VIEW بازگشته باشید.