Unter Android 11 können Nutzer detailliertere Berechtigungen für Standort, Mikrofon und Kamera festlegen. Außerdem setzt das System die Berechtigungen von nicht verwendeten Apps zurück, die auf Android 11 oder höher ausgerichtet sind. 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 der Berechtigungsdialog, der Nutzern angezeigt wird, wenn Ihre App eine Berechtigung für Standort, Mikrofon oder Kamera anfordert, die Option Nur dieses Mal. Wenn der Nutzer diese Option im Dialogfeld auswählt, erhält Ihre App eine temporäre Einmalberechtigung.
Weitere Informationen zur Verarbeitung von Einmalberechtigungen
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 Nutzerdaten, indem es die sensiblen Laufzeitberechtigungen, die der Nutzer Ihrer App erteilt hat, automatisch zurücksetzt. Diese Aktion hat dieselbe Wirkung, als ob der Nutzer eine Berechtigung in den Systemeinstellungen aufgerufen und die Zugriffsebene Ihrer App in Verweigern geändert hätte. 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.
Weitere Informationen zum automatischen Zurücksetzen von Berechtigungen für nicht verwendete Apps
Sichtbarkeit des Berechtigungsdialogfelds
Wenn der Nutzer unter Android 11 während der Lebensdauer der App oder der Installation auf einem Gerät mehr als einmal auf Ablehnen für eine bestimmte Berechtigung tippt, wird das Systemberechtigungsdialogfeld nicht mehr angezeigt, wenn Ihre App diese Berechtigung noch einmal anfordert. Die Aktion des Nutzers impliziert „Nicht mehr fragen“. In früheren Versionen wurde Nutzern das Dialogfeld für Systemberechtigungen jedes Mal angezeigt, wenn Ihre App eine Berechtigung angefordert hat, es sei denn, der Nutzer hatte zuvor ein Kästchen oder eine Option für „Nicht noch einmal fragen“ ausgewählt. Diese Verhaltensänderung in Android 11 soll verhindern, dass wiederholt Berechtigungen angefordert werden, die Nutzer abgelehnt haben.
Mit dem folgenden Befehl können Sie ermitteln, ob einer App Berechtigungen dauerhaft verweigert wurden (zu Debugging- und Testzwecken):
adb shell dumpsys package PACKAGE_NAME
Dabei ist PACKAGE_NAME der Name des zu prüfenden Pakets.
Die Ausgabe des Befehls enthält Abschnitte, die so aussehen:
... 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 vom Nutzer einmal abgelehnt wurden, sind mit USER_SET
gekennzeichnet.
Berechtigungen, die durch zweimaliges Auswählen von Ablehnen dauerhaft abgelehnt wurden, sind mit USER_FIXED
gekennzeichnet.
Während des Tests sollten Sie diese Flags möglicherweise zurücksetzen, damit Tester nicht überrascht sind, wenn das Anforderungsdialogfeld nicht angezeigt wird. Führen Sie dazu den folgenden Befehl aus:
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 Android-App-Berechtigungen finden Sie auf der Referenzseite zur Permissions API.
Weitere Informationen zum Umgang mit verweigerten Berechtigungen in Ihrer App
Änderungen am Systembenachrichtigungsfenster
In Android 11 wird die Berechtigung SYSTEM_ALERT_WINDOW
für Apps auf verschiedene Weise geändert. Die Änderungen sollen Nutzer schützen, indem die Berechtigungserteilung bewusster erfolgt.
Bestimmten Apps wird die Berechtigung SYSTEM_ALERT_WINDOW auf Anfrage automatisch gewährt
Bestimmten App-Klassen wird die Berechtigung SYSTEM_ALERT_WINDOW
auf Anfrage automatisch 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 auch die Berechtigung.Jeder App, die den Bildschirm über
MediaProjection
aufzeichnet undSYSTEM_ALERT_WINDOW
anfordert, wird die Berechtigung automatisch erteilt, sofern der Nutzer die Berechtigung für die App nicht explizit verweigert hat. Wenn die App die Bildschirmaufzeichnung beendet, verliert sie die Berechtigung. Dieser Anwendungsfall ist hauptsächlich für Apps zum Livestreaming von Spielen vorgesehen.
Diese Apps müssen ACTION_MANAGE_OVERLAY_PERMISSION
nicht senden, um die Berechtigung SYSTEM_ALERT_WINDOW
zu erhalten. Sie können SYSTEM_ALERT_WINDOW
einfach direkt anfordern.
Intents vom Typ MANAGE_OVERLAY_PERMISSION führen Nutzer immer zum Bildschirm für Systemberechtigungen
Ab Android 11 führen ACTION_MANAGE_OVERLAY_PERMISSION
-Intents den Nutzer immer zum Einstellungsbildschirm der obersten Ebene, auf dem er die Berechtigungen SYSTEM_ALERT_WINDOW
für Apps gewähren oder widerrufen kann. Alle package:
-Daten im Intent werden ignoriert.
In früheren Android-Versionen konnte für den ACTION_MANAGE_OVERLAY_PERMISSION
-Intent ein Paket angegeben werden, wodurch der Nutzer zu einem app-spezifischen Bildschirm zum Verwalten der Berechtigung weitergeleitet wurde. Diese Funktion wird ab Android 11 nicht mehr unterstützt. Stattdessen muss der Nutzer zuerst die App auswählen, für die er die Berechtigung erteilen oder widerrufen möchte. Diese Änderung soll Nutzer schützen, indem die Berechtigungserteilung bewusster erfolgt.
Telefonnummern
In Android 11 wird die telefonbezogene Berechtigung geändert, die Ihre App beim Lesen von Telefonnummern verwendet.
Wenn Ihre App auf Android 11 oder höher ausgerichtet ist und auf die in der folgenden Liste aufgeführten Telefonnummer-APIs zugreifen muss, müssen Sie die Berechtigung READ_PHONE_NUMBERS
anstelle der Berechtigung READ_PHONE_STATE
anfordern.
- Die
getLine1Number()
-Methode in der KlasseTelephonyManager
und in der KlasseTelecomManager
. - Die nicht unterstützte Methode
getMsisdn()
in der KlasseTelephonyManager
.
Wenn in Ihrer App READ_PHONE_STATE
deklariert ist, um andere Methoden als die in der vorherigen Liste aufzurufen, können Sie 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:
- Ändern Sie die Deklaration von
READ_PHONE_STATE
so, dass Ihre App die Berechtigung nur unter Android 10 (API-Level 29) und niedriger verwendet. - Fügen Sie die Berechtigung
READ_PHONE_NUMBERS
hinzu.
Das folgende Manifestdeklarations-Snippet veranschaulicht diesen Prozess:
<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>
Zusätzliche Ressourcen
Weitere Informationen zu den Änderungen an Berechtigungen in Android 11 finden Sie in den folgenden Materialien:
Videos
Entwickeln mit den neuesten Änderungen am Datenschutz in Android 11