Mit Android 11 können Nutzer detailliertere Berechtigungen für Standort, Mikrofon und Kamera festlegen. Außerdem werden die Berechtigungen von nicht verwendeten Apps, die auf Android 11 oder höher ausgerichtet sind, vom System zurückgesetzt. 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 Berechtigungsdialogfeld, das 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 einmalige Berechtigung.
Weitere Informationen zur Verarbeitung einmaliger Berechtigungen durch das System
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, wie wenn der Nutzer eine Berechtigung in den Systemeinstellungen aufruft und die Zugriffsebene Ihrer App in Verweigern ändert. Wenn Ihre App die Best Practices für das Anfordern von Berechtigungen zur Laufzeitbefolgt, 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 Berechtigungsdialogfelds
Wenn der Nutzer in Android 11 während der Installation Ihrer App auf einem Gerät mehr als einmal auf Verweigern tippt, wird das Systemberechtigungsdialogfeld nicht angezeigt, wenn Ihre App diese Berechtigung noch einmal anfordert. Die Aktion des Nutzers bedeutet „Nicht noch einmal fragen“. In früheren Versionen wurde das Systemberechtigungsdialogfeld jedes Mal angezeigt, wenn Ihre App eine Berechtigung angefordert hat, es sei denn, der Nutzer hatte zuvor ein Kontrollkästchen oder eine Option für „Nicht noch einmal fragen“ ausgewählt. Diese Verhaltensänderung in Android 11 soll wiederholte Anfragen nach Berechtigungen verhindern, die Nutzer verweigert haben.
Verwenden Sie den folgenden Befehl, um zu 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 untersuchenden Pakets.
Die Ausgabe des Befehls enthält Abschnitte wie diesen:
... 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 verweigert wurden, werden mit USER_SET gekennzeichnet.
Berechtigungen, die durch zweimaliges Auswählen von Verweigern dauerhaft verweigert wurden, werden 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. Verwenden Sie dazu den 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 Android-App-Berechtigungen finden Sie auf der API-Referenzseite für Berechtigungen.
Weitere Informationen zum Umgang mit der Verweigerung von Berechtigungen in Ihrer App
Änderungen am Systembenachrichtigungsfenster
In Android 11 gibt es mehrere Änderungen daran, wie Apps die
SYSTEM_ALERT_WINDOW
Berechtigung erhalten. Die Änderungen sollen Nutzer schützen, indem die Berechtigung bewusster erteilt wird.
Bestimmte Apps erhalten die Berechtigung „SYSTEM_ALERT_WINDOW“ auf Anfrage automatisch
Bestimmte Klassen von Apps erhalten die Berechtigung SYSTEM_ALERT_WINDOW auf Anfrage automatisch:
Jede App mit
ROLE_CALL_SCREENING, dieSYSTEM_ALERT_WINDOWanfordert, erhält die Berechtigung automatisch. Wenn die AppROLE_CALL_SCREENINGverliert, verliert sie auch die Berechtigung.Jede App, die den Bildschirm über eine
MediaProjectionaufnimmt undSYSTEM_ALERT_WINDOWanfordert, erhält die Berechtigung automatisch , 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 Livestreaming von Spielen vorgesehen.
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 führen Nutzer immer zum Bildschirm für Systemberechtigungen
Ab Android 11,
ACTION_MANAGE_OVERLAY_PERMISSION
Intents führen den Nutzer immer zum obersten Einstellungen -Bildschirm, auf dem der
Nutzer die
SYSTEM_ALERT_WINDOW
Berechtigungen für Apps erteilen oder widerrufen kann. Alle package:-Daten im Intent werden ignoriert.
In früheren Android-Versionen konnte das ACTION_MANAGE_OVERLAY_PERMISSION-Intent ein Paket angeben, wodurch der Nutzer zu einem appspezifischen 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 Berechtigung bewusster erteilt wird.
Telefonnummern
In Android 11 ändert sich die telefonbezogene Berechtigung, 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 Telefonnummern-APIs zugreifen muss, müssen Sie die
READ_PHONE_NUMBERS
Berechtigung anfordern, nicht die READ_PHONE_STATE Berechtigung.
- Die
getLine1Number()Methode in derTelephonyManagerKlasse und in derTelecomManagerKlasse. - Die nicht unterstützte
getMsisdn()Methode in derTelephonyManagerKlasse.
Wenn Ihre App READ_PHONE_STATE deklariert, 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 jedoch nur für die Methoden in der vorherigen Liste verwenden, aktualisieren Sie die 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.
Der folgende Manifestdeklarations-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>
Zusätzliche Ressourcen
Weitere Informationen zu den Änderungen an Berechtigungen in Android 11 finden Sie in den folgenden Materialien:
Videos
Developing with the latest privacy changes in Android 11