Mit Android 11 haben Nutzer die Möglichkeit, detailliertere Berechtigungen für Standort, Mikrofon und Kamera festzulegen. Außerdem setzt das System die Berechtigungen nicht verwendeter Apps für Android 11 oder höher zurück. Apps müssen möglicherweise die von ihnen deklarierten Berechtigungen aktualisieren, wenn sie das Systembenachrichtigungsfenster verwenden oder Informationen zu Telefonnummern lesen.
Einmalige Berechtigungen
Ab Android 11 enthält das für Nutzer sichtbare Berechtigungsdialogfeld die Option Nur dieses Mal, wenn deine App eine Berechtigung für den Standort, das Mikrofon oder die Kamera anfordert. Wenn der Nutzer diese Option im Dialogfeld auswählt, wird Ihrer App eine temporäre einmalige Berechtigung gewährt.
Weitere Informationen zum Umgang mit einmaligen Berechtigungen
Berechtigungen für nicht verwendete Apps automatisch zurücksetzen
Wenn Ihre App auf Android 11 oder höher ausgerichtet ist und einige Monate lang nicht verwendet wird, schützt das System die Nutzerdaten, indem die vertraulichen Laufzeitberechtigungen, die der Nutzer Ihrer App gewährt hat, automatisch zurückgesetzt wird. Diese Aktion hat denselben Effekt, als ob der Nutzer eine Berechtigung in den Systemeinstellungen sieht und die Zugriffsebene der App zu Ablehnen ändert. Wenn Ihre App den Best Practices für das Anfordern von Berechtigungen zur Laufzeit entspricht, sollten Sie keine Änderungen an Ihrer App vornehmen müssen. Das liegt daran, dass Sie bei der Interaktion des Nutzers mit Funktionen in Ihrer App prüfen sollten, ob die Funktionen die erforderlichen Berechtigungen haben.
Sichtbarkeit des Berechtigungsdialogs
Wenn Nutzer ab Android 11 während der Lebensdauer der App-Installation auf einem Gerät mehrmals auf Ablehnen für eine bestimmte Berechtigung tippen, wird ihnen das Dialogfeld für Systemberechtigungen nicht angezeigt, wenn die App diese Berechtigung noch einmal anfordert. Die Aktion des Nutzers impliziert „Nicht mehr fragen“. In früheren Versionen wurde das Dialogfeld für Systemberechtigungen jedes Mal angezeigt, wenn Ihre App eine Berechtigung anforderte, es sei denn, der Nutzer hatte zuvor das Kästchen oder die Option „Nicht mehr fragen“ ausgewählt. Durch diese Verhaltensänderung in Android 11 werden wiederholte Anfragen nach Berechtigungen verhindert, die Nutzer abgelehnt haben.
Verwenden Sie den folgenden Befehl, um zu Fehlerbehebungs- und Testzwecken zu ermitteln, ob einer App dauerhaft Berechtigungen verweigert wurden:
adb shell dumpsys package PACKAGE_NAME
Dabei ist PACKAGE_NAME der Name des zu prüfenden Pakets.
Die Ausgabe des Befehls enthält Abschnitte wie diese:
... runtime permissions: android.permission.POST_NOTIFICATIONS: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED] android.permission.ACCESS_FINE_LOCATION: granted=false, flags=[ USER_SET|USER_FIXED|USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED] android.permission.BLUETOOTH_CONNECT: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED] ...
Berechtigungen, die der Nutzer einmal verweigert hat, sind von USER_SET
gekennzeichnet.
Berechtigungen, die durch zweimaliges Auswählen von Ablehnen dauerhaft abgelehnt wurden, werden von USER_FIXED
gekennzeichnet.
Beim Testen kann es sinnvoll sein, diese Flags zurückzusetzen, damit die Tester nicht überrascht werden, wenn das Anfragedialogfeld nicht angezeigt wird. Verwenden Sie dazu folgenden Befehl:
adb shell pm clear-permission-flags PACKAGE_NAME PERMISSION_NAME user-set user-fixed
PERMISSION_NAME ist der Name der Berechtigung, die Sie zurücksetzen möchten. Eine vollständige Liste der Berechtigungen für Android-Apps finden Sie auf der Referenzseite der Entitlements API.
Weitere Informationen zum Umgang mit abgelehnten Berechtigungen in Apps
Änderungen des Systembenachrichtigungsfensters
Unter Android 11 werden verschiedene Änderungen daran vorgenommen, wie Apps die Berechtigung SYSTEM_ALERT_WINDOW
erhalten. Die Änderungen dienen dem Schutz der Nutzer, indem die Berechtigungserteilung bewusster gestaltet wird.
Bestimmten Apps wird auf Anfrage automatisch die Berechtigung SYSTEM_ALERT_WINDOW gewährt
Bestimmten Klassen von Apps wird auf Anfrage automatisch die Berechtigung SYSTEM_ALERT_WINDOW
gewährt:
Jeder App, die
ROLE_CALL_SCREENING
hat undSYSTEM_ALERT_WINDOW
anfordert, wird die Berechtigung automatisch gewährt. Wenn die AppROLE_CALL_SCREENING
verliert, verliert sie die Berechtigung.Jede App, die den Bildschirm über ein
MediaProjection
aufnimmt undSYSTEM_ALERT_WINDOW
anfordert, erhält die Berechtigung automatisch, es sei denn, der Nutzer hat die Berechtigung für die App ausdrücklich verweigert. Wenn die App die Bildschirmaufnahme beendet, verliert sie die Berechtigung. Dieser Anwendungsfall ist in erster Linie für Livestreaming-Apps von Spielen gedacht.
Diese Apps müssen nicht ACTION_MANAGE_OVERLAY_PERMISSION
senden, um die Berechtigung SYSTEM_ALERT_WINDOW
zu erhalten. Sie können SYSTEM_ALERT_WINDOW
einfach direkt anfordern.
Mit MANAGE_OVERLAY_PERMISSION-Intents wird der Nutzer immer zum Bildschirm mit den Systemberechtigungen weitergeleitet
Ab Android 11 wird der Nutzer durch ACTION_MANAGE_OVERLAY_PERMISSION
-Intents immer zum Bildschirm Einstellungen der obersten Ebene weitergeleitet. Dort kann er die SYSTEM_ALERT_WINDOW
-Berechtigungen für Apps erteilen oder widerrufen. package:
-Daten im Intent werden ignoriert.
In früheren Android-Versionen konnte der Intent ACTION_MANAGE_OVERLAY_PERMISSION
ein Paket angeben, das den Nutzer zu einem App-spezifischen Bildschirm zur Verwaltung der Berechtigung weiterleitete. Diese Funktion wird ab Android 11 nicht unterstützt. Stattdessen muss der Nutzer zuerst die App auswählen, der er die Berechtigung erteilen oder entziehen möchte. Diese Änderung soll Nutzer schützen, indem die Berechtigungserteilung bewusster erfolgt.
Telefonnummern
Unter Android 11 wird die telefonbezogene Berechtigung geändert, die deine App zum Lesen von Telefonnummern verwendet.
Wenn Ihre App auf Android 11 oder höher ausgerichtet ist und auf die in der folgenden Liste aufgeführten Telefonnummern-APIs zugreifen muss, müssen Sie die Berechtigung READ_PHONE_NUMBERS
anstelle der Berechtigung READ_PHONE_STATE
anfordern.
- Die Methode
getLine1Number()
in der KlasseTelephonyManager
und der KlasseTelecomManager
. - Die nicht unterstützte Methode
getMsisdn()
in der KlasseTelephonyManager
.
Wenn deine App READ_PHONE_STATE
für den Aufruf anderer Methoden als der in der vorherigen Liste deklariert, kannst du READ_PHONE_STATE
weiterhin für alle Android-Versionen anfordern. Wenn Sie die Berechtigung READ_PHONE_STATE
nur für die Methoden in der vorherigen Liste verwenden, aktualisieren Sie Ihre Manifestdatei so:
- Ändere deine Deklaration von
READ_PHONE_STATE
so, dass deine App die Berechtigung nur unter Android 10 (API-Level 29) und niedriger verwendet. - Fügen Sie die Berechtigung
READ_PHONE_NUMBERS
hinzu.
Das folgende Manifestdeklaration-Snippet veranschaulicht diesen Vorgang:
<manifest> <!-- Grants the READ_PHONE_STATE permission only on devices that run Android 10 (API level 29) and lower. --> <uses-permission android:name="android.permission.READ_PHONE_STATE" android:maxSdkVersion="29" /> <uses-permission android:name="android.permission.READ_PHONE_NUMBERS" /> </manifest>
Weitere Informationen
Weitere Informationen zu den Änderungen an Berechtigungen in Android 11 finden Sie in den folgenden Materialien:
Videos
Aktuelle Datenschutzänderungen für Android 11