Les sections suivantes vous expliquent comment vérifier si le navigateur par défaut ou tout autre navigateur sur un appareil Android est compatible avec les onglets personnalisés.
Vérifier si le navigateur par défaut est compatible avec les onglets personnalisés
Pour vérifier si le navigateur par défaut est compatible avec les onglets personnalisés, utilisez la méthode d'assistance getPackageName
dans CustomTabsClient
:
String packageName = CustomTabsClient.getPackageName(
context,
Collections.emptyList()
);
if (packageName == null) {
// Custom Tabs are not supported by the default browser
}
Vérifier si un navigateur de l'appareil est compatible avec les onglets personnalisés
Pour vérifier si un navigateur installé sur l'appareil est compatible avec les onglets personnalisés, vous devez interroger les applications pouvant gérer les intents VIEW
, extraire leurs noms de package et utiliser la méthode d'assistance getPackageName
dans 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
}
Modifications apportées à la visibilité des packages sous Android 11
Android 11 a introduit des modifications de la visibilité des packages. Si votre application Android cible le niveau d'API 30 ou une version ultérieure, vous devez ajouter la déclaration suivante dans la section "queries" de AndroidManifest.xml
.
Sans cette déclaration, la méthode queryIntentActivities
ne renverra pas de résultats:
<queries>
<intent>
<action android:name=
"android.support.customtabs.action.CustomTabsService" />
</intent>
</queries>
Aucun navigateur de l'appareil n'est compatible avec les onglets personnalisés
Si aucun navigateur compatible avec les onglets personnalisés n'est disponible sur l'appareil et que vous lancez une URL à l'aide de customTabsIntent.launchUrl(context, url)
, l'intent peut échouer, ce qui entraîne une erreur ActivityNotFoundException
.
Effectuez toujours une vérification de compatibilité pour améliorer l'expérience utilisateur.
Vous pouvez utiliser un intent ACTION_VIEW
standard pour ouvrir l'URL dans n'importe quel navigateur disponible.