In den folgenden Abschnitten erfahren Sie, wie Sie prüfen, ob der Standardbrowser oder ein anderer Browser auf einem Android-Gerät benutzerdefinierte Tabs unterstützt.
Prüfen, ob der Standardbrowser benutzerdefinierte Tabs unterstützt
Ob der Standardbrowser benutzerdefinierte Tabs unterstützt, können Sie mit der Hilfsmethode getPackageName
in CustomTabsClient
prüfen:
String packageName = CustomTabsClient.getPackageName(
context,
Collections.emptyList()
);
if (packageName == null) {
// Custom Tabs are not supported by the default browser
}
Prüfen, ob ein Browser auf dem Gerät benutzerdefinierte Tabs unterstützt
Wenn Sie prüfen möchten, ob ein auf dem Gerät installierter Browser benutzerdefinierte Tabs unterstützt, müssen Sie nach Apps suchen, die VIEW
-Intents verarbeiten können, ihre Paketnamen extrahieren und die Hilfsmethode getPackageName
in CustomTabsClient
verwenden:
// 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
}
Änderungen an der Sichtbarkeit von Paketen unter Android 11
Mit Android 11 wurden Änderungen an der Sichtbarkeit von Paketen eingeführt. Wenn Ihre Android-App auf API-Level 30 oder höher ausgerichtet ist, müssen Sie die folgende Deklaration im Abschnitt „Abfragen“ der AndroidManifest.xml
hinzufügen.
Ohne diese Deklaration gibt die queryIntentActivities
-Methode keine Ergebnisse zurück:
<queries>
<intent>
<action android:name=
"android.support.customtabs.action.CustomTabsService" />
</intent>
</queries>
Kein Browser auf dem Gerät unterstützt benutzerdefinierte Tabs
Wenn auf dem Gerät kein Browser verfügbar ist, der benutzerdefinierte Tabs unterstützt, und Sie eine URL mit customTabsIntent.launchUrl(context, url)
öffnen, schlägt die Intent-Aktion möglicherweise fehl und es wird ActivityNotFoundException
angezeigt.
Führen Sie immer eine Kompatibilitätsprüfung durch, um die Nutzerfreundlichkeit zu verbessern.
Sie können auf einen standardmäßigen ACTION_VIEW
-Intent zurückgreifen, um die URL in einem beliebigen verfügbaren Browser zu öffnen.