Mit Android 11 können Nutzer detailliertere Berechtigungen für Standort, Mikrofon und Kamera festlegen. Außerdem setzt das System die Berechtigungen nicht verwendeter 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 Systemwarnungsfenster verwenden oder Informationen zu Telefonnummern lesen.
Einmalige Berechtigungen
Ab Android 11 enthält das Dialogfeld für Berechtigungen, das für Nutzer sichtbar ist, die Option Nur dieses Mal, wenn Ihre App eine Berechtigung für den Zugriff auf den Standort, das Mikrofon oder die Kamera anfordert. Wenn der Nutzer diese Option im Dialogfeld auswählt, erhält Ihre App eine temporäre einmalige Berechtigung.
Weitere Informationen dazu, wie das System mit einmaligen Berechtigungen umgeht
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 es die sensiblen Laufzeitberechtigungen, die der Nutzer Ihrer App gewährt hat, automatisch zurücksetzt. Diese Aktion hat dieselbe Wirkung, wie wenn der Nutzer eine Berechtigung in den Systemeinstellungen aufruft und die Zugriffsebene Ihrer App in Verweigern ändert. Wenn Ihre App den Best Practices für das Anfordern von Berechtigungen zur Laufzeit folgt, sollten Sie keine Änderungen an Ihrer App vornehmen müssen. Wenn der Nutzer mit Funktionen in Ihrer App interagiert, sollten Sie prüfen, ob die Funktionen die erforderlichen Berechtigungen haben.
Weitere Informationen zum automatischen Zurücksetzen von Berechtigungen für nicht verwendete Apps
Sichtbarkeit des Berechtigungsdialogs
Wenn der Nutzer ab Android 11 während der Installationsdauer Ihrer App auf einem Gerät mehr als einmal für eine bestimmte Berechtigung auf Ablehnen tippt, wird das Dialogfeld für die Systemberechtigungen nicht angezeigt, wenn Ihre App diese Berechtigung noch einmal anfordert. Die Aktion des Nutzers impliziert „Nicht mehr fragen“. In früheren Versionen wurde Nutzern jedes Mal, wenn die App eine Berechtigung angefordert hat, das Dialogfeld für Systemberechtigungen angezeigt, es sei denn, der Nutzer hatte zuvor das Kästchen oder die Option „Nicht mehr fragen“ ausgewählt. Diese Verhaltensänderung in Android 11 soll wiederholte Anfragen für Berechtigungen verhindern, die Nutzer abgelehnt haben.
Mit dem folgenden Befehl können Sie feststellen, ob einer App dauerhaft Berechtigungen 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, werden mit USER_SET gekennzeichnet.
Berechtigungen, die durch zweimaliges Auswählen von Ablehnen dauerhaft verweigert wurden, sind mit USER_FIXED gekennzeichnet.
Während des Tests solltest du diese Flags zurücksetzen, damit Tester nicht überrascht sind, wenn das Dialogfeld für die Anfrage 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 Berechtigungs-API.
Weitere Informationen zum Umgang mit der Ablehnung von Berechtigungen in Ihrer App
Änderungen am Systembenachrichtigungsfenster
In Android 11 wurden mehrere Änderungen daran vorgenommen, wie Apps die Berechtigung SYSTEM_ALERT_WINDOW gewährt wird. 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 mit
ROLE_CALL_SCREENING, dieSYSTEM_ALERT_WINDOWanfordert, wird die Berechtigung automatisch gewährt. Wenn die AppROLE_CALL_SCREENINGverliert, verliert sie auch die Berechtigung.Jeder App, die den Bildschirm über eine
MediaProjectionaufnimmt undSYSTEM_ALERT_WINDOWanfordert, wird die Berechtigung automatisch gewährt, es sei denn, der Nutzer hat der App die Berechtigung explizit verweigert. Wenn die App die Bildschirmaufnahme beendet, verliert sie die Berechtigung. Dieser Anwendungsfall ist hauptsächlich für Livestreaming-Apps für Spiele 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.
MANAGE_OVERLAY_PERMISSION-Intents leiten Nutzer immer zum Bildschirm für Systemberechtigungen weiter
Ab Android 11 führen ACTION_MANAGE_OVERLAY_PERMISSION-Intents Nutzer immer zum obersten Bildschirm Einstellungen, auf dem sie die Berechtigungen SYSTEM_ALERT_WINDOW für Apps gewähren oder widerrufen können. Alle package:-Daten im Intent werden ignoriert.
In früheren Android-Versionen konnte mit dem Intent ACTION_MANAGE_OVERLAY_PERMISSION ein Paket angegeben werden, über das der Nutzer zu einem App-spezifischen Bildschirm zur Verwaltung der Berechtigung gelangte. 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 Berechtigung für Telefonfunktionen geändert, die deine 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 Methode
getLine1Number()sowohl in der KlasseTelephonyManagerals auch 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_STATEso, dass Ihre App die Berechtigung nur unter Android 10 (API-Level 29) und niedriger verwendet. - Fügen Sie die Berechtigung
READ_PHONE_NUMBERShinzu.
Das folgende Snippet für die Manifestdeklaration 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>
Zusätzliche Ressourcen
Weitere Informationen zu den Änderungen an Berechtigungen in Android 11 findest du in den folgenden Materialien:
Videos
Entwicklung mit den neuesten Datenschutzänderungen in Android 11