Unter Android 11 können Nutzer detailliertere Berechtigungen für Standort, Mikrofon und Kamera angeben. 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 deklarierten Berechtigungen aktualisieren, wenn sie das Systembenachrichtigungsfenster verwenden oder Informationen zu Telefonnummern lesen.
Einmalige Berechtigungen
Ab Android 11 wird jedes Mal, wenn Ihre App eine Berechtigung in Bezug auf Standort, Mikrofon oder Kamera anfordert, im Berechtigungsdialogfeld für Nutzer die Option Nur dieses Mal angezeigt. 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 nicht verwendet wird, schützt das System die Nutzerdaten, indem es die vertraulichen Laufzeitberechtigungen automatisch zurücksetzt, die der Nutzer Ihrer App erteilt hat. Diese Aktion hat denselben Effekt, als ob der Nutzer eine Berechtigung in den Systemeinstellungen angezeigt und die Zugriffsebene Ihrer App in Ablehnen geändert hätte. Wenn Ihre Anwendung den Best Practices für das Anfordern von Berechtigungen zur Laufzeit entspricht, sollten Sie keine Änderungen an der Anwendung vornehmen. Sie sollten nämlich überprüfen, ob die Funktionen die erforderlichen Berechtigungen haben, wenn der Nutzer mit Funktionen in Ihrer Anwendung interagiert.
Sichtbarkeit des Berechtigungsdialogfelds
Wenn der Nutzer ab Android 11 während der Installation der App auf einem Gerät mehrmals für eine bestimmte Berechtigung auf Ablehnen tippt, wird das Dialogfeld für Systemberechtigungen nicht angezeigt, wenn die App diese Berechtigung noch einmal anfordert. Die Handlung des Nutzers impliziert „Nicht mehr fragen“. In früheren Versionen wurde Nutzern das Dialogfeld „Systemberechtigungen“ jedes Mal angezeigt, wenn Ihre Anwendung eine Berechtigung angefordert hat, es sei denn, der Nutzer hatte zuvor das Kästchen oder die Option „Nicht mehr fragen“ angeklickt. Durch diese Verhaltensänderung in Android 11 werden wiederholte Anfragen nach Berechtigungen vermieden, die Nutzer abgelehnt haben.
Verwenden Sie den folgenden Befehl, um zu Debugging- und Testzwecken herauszufinden, ob einer Anwendung 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, werden von USER_SET
gemeldet.
Berechtigungen, die dauerhaft durch zweimaliges Auswählen von Ablehnen dauerhaft abgelehnt wurden, werden von USER_FIXED
gekennzeichnet.
Während des Tests kann es sinnvoll sein, diese Flags zurückzusetzen, damit die Tester nicht überrascht sind, wenn das Dialogfeld für Anfragen nicht angezeigt wird. Verwenden Sie dazu den 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 für die permissions API.
Weitere Informationen zum Umgang mit der Ablehnung von Berechtigungen in Ihrer App
Änderungen des Systembenachrichtigungsfensters
Unter Android 11 werden verschiedene Änderungen daran vorgenommen, wie Apps die Berechtigung SYSTEM_ALERT_WINDOW
gewährt wird. Die Änderungen dienen dem Schutz der Nutzer, indem die Berechtigung gezielter gewährt wird.
Bestimmten Apps wird auf Anfrage automatisch die Berechtigung SYSTEM_ALERT_WINDOW gewährt
Bestimmten Arten 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.Jeder App, die den Bildschirm über eine
MediaProjection
aufzeichnet undSYSTEM_ALERT_WINDOW
anfordert, wird die Berechtigung automatisch gewährt, es sei denn, der Nutzer hat der App die Berechtigung ausdrücklich verweigert. Wenn die App die Bildschirmaufnahme beendet, verliert sie die Berechtigung. Dieser Anwendungsfall ist hauptsächlich für Apps zum Streamen von Spielen vorgesehen.
Diese Apps müssen ACTION_MANAGE_OVERLAY_PERMISSION
nicht senden, um die Berechtigung SYSTEM_ALERT_WINDOW
zu erhalten. Die Anwendungen können SYSTEM_ALERT_WINDOW
einfach direkt anfordern.
Intents vom Typ MANAGE_OVERLAY_PERMISSION bringen den Nutzer immer zum Bildschirm für Systemberechtigungen
Ab Android 11 wird der Nutzer durch ACTION_MANAGE_OVERLAY_PERMISSION
-Intents immer zum übergeordneten Bildschirm Einstellungen weitergeleitet. Dort kann er Anwendungen die SYSTEM_ALERT_WINDOW
-Berechtigungen erteilen oder entziehen. 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 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 entziehen möchte. Diese Änderung dient dem Schutz der Nutzer, indem die Berechtigungserteilung gezielter erfolgt.
Telefonnummern
Unter Android 11 wird die telefonbezogene Berechtigung geändert, die deine App beim Lesen von Telefonnummern verwendet.
Wenn deine App auf Android 11 oder höher ausgerichtet ist und auf die in der folgenden Liste aufgeführten APIs für Telefonnummern zugreifen muss, musst du 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 in deiner App READ_PHONE_STATE
für den Aufruf anderer Methoden als den in der vorherigen Liste deklariert ist, 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 jedoch so:
- Ändere die 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 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