Unter 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. Außerdem müssen Apps möglicherweise die von ihnen deklarierten Berechtigungen aktualisieren, wenn sie das Systemwarnfenster verwenden oder Informationen zu Telefonnummern lesen.
Einmalige Berechtigungen
Ab Android 11 enthält das Berechtigungsdialogfeld für Nutzer, in dem Ihre App eine Berechtigung für die Standortermittlung, das Mikrofon oder die Kamera anfordert, die Option Nur dieses Mal. Wenn der Nutzer diese Option im Dialogfeld auswählt, wird Ihrer App eine vorübergehende einmalige Berechtigung gewährt.
Weitere Informationen zur Verarbeitung von 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 sensiblen Laufzeitberechtigungen, die der Nutzer Ihrer App gewährt hat, automatisch zurückgesetzt werden. Diese Aktion hat dieselbe Wirkung, als hätte der Nutzer eine Berechtigung in den Systemeinstellungen aufgerufen und die Zugriffsebene Ihrer App in Verweigern geändert. Wenn Ihre App die Best Practices für das Anfordern von Berechtigungen zur Laufzeit einhält, müssen Sie keine Änderungen an Ihrer App vornehmen. Wenn Nutzer mit Funktionen in Ihrer App interagieren, sollten Sie prüfen, ob die Funktionen die erforderlichen Berechtigungen haben.
Weitere Informationen zum automatischen Zurücksetzen der Berechtigungen für nicht verwendete Apps
Sichtbarkeit des Berechtigungsdialogfelds
Wenn der Nutzer ab Android 11 während der Lebensdauer der Installation Ihrer App auf einem Gerät mehrmals auf Ablehnen für eine bestimmte Berechtigung tippt, wird ihm das Dialogfeld für Systemberechtigungen nicht angezeigt, wenn Ihre App diese Berechtigung noch einmal anfordert. Die Aktion des Nutzers bedeutet „Nicht mehr fragen“. In früheren Versionen wurde Nutzern jedes Mal, wenn Ihre App eine Berechtigung anforderte, das Dialogfeld für Systemberechtigungen angezeigt, es sei denn, der Nutzer hatte zuvor ein Kästchen oder eine Option für „Nicht noch einmal fragen“ ausgewählt. Durch diese Verhaltensänderung in Android 11 werden wiederholte Anfragen für Berechtigungen erschwert, die Nutzer abgelehnt haben.
Verwenden Sie den folgenden Befehl, um zu ermitteln, ob einer App Berechtigungen dauerhaft verweigert wurden (zum Debuggen und Testen):
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 zweimalige Auswahl von Ablehnen dauerhaft abgelehnt wurden, werden mit USER_FIXED
gekennzeichnet.
Während der Tests sollten Sie diese Flags zurücksetzen, damit die 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 der Permissions API.
Weitere Informationen zum Umgang mit der Ablehnung von Berechtigungen
Änderungen am Systembenachrichtigungsfenster
Unter Android 11 gibt es mehrere Änderungen an der Gewährung der Berechtigung SYSTEM_ALERT_WINDOW
für Apps. Mit den Änderungen soll der Schutz der Nutzer verbessert werden, indem die Berechtigungserteilung bewusster erfolgt.
Bestimmten Apps wird auf Anfrage automatisch die Berechtigung „SYSTEM_ALERT_WINDOW“ gewährt
Bestimmten App-Klassen wird die SYSTEM_ALERT_WINDOW
-Berechtigung auf Anfrage automatisch gewährt:
Alle Apps, die
ROLE_CALL_SCREENING
haben undSYSTEM_ALERT_WINDOW
anfordern, erhalten die Berechtigung automatisch. Wenn die AppROLE_CALL_SCREENING
verliert, verliert sie auch die Berechtigung.Jede App, die den Bildschirm über eine
MediaProjection
erfasst undSYSTEM_ALERT_WINDOW
anfordert, erhält die Berechtigung automatisch, es sei denn, der Nutzer hat sie der App explizit verweigert. Wenn die App den Bildschirm nicht mehr erfasst, verliert sie die Berechtigung. Dieser Anwendungsfall ist hauptsächlich für Apps zum Livestreaming von Spielen gedacht.
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.
Bei MANAGE_OVERLAY_PERMISSION-Intents wird der Nutzer immer zum Bildschirm mit den Systemberechtigungen weitergeleitet
Ab Android 11 werden Nutzer über ACTION_MANAGE_OVERLAY_PERMISSION
-Intents immer zum Bildschirm Einstellungen der obersten Ebene weitergeleitet, wo sie die SYSTEM_ALERT_WINDOW
-Berechtigungen für Apps gewähren oder widerrufen können. Alle package:
-Daten in der Absicht werden ignoriert.
In früheren Android-Versionen konnte in der ACTION_MANAGE_OVERLAY_PERMISSION
-Intent 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. Mit dieser Änderung soll der Schutz der Nutzer verbessert werden, indem die Berechtigungserteilung bewusster erfolgt.
Telefonnummern
Unter Android 11 wird die telefonbezogene Berechtigung geändert, die Ihre 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
anfordern, anstatt die Berechtigung READ_PHONE_STATE
.
- Die
getLine1Number()
-Methode sowohl in der KlasseTelephonyManager
als auch in der KlasseTelecomManager
- Die nicht unterstützte
getMsisdn()
-Methode in der KlasseTelephonyManager
.
Wenn in Ihrer App READ_PHONE_STATE
zum Aufrufen anderer Methoden als der in der vorherigen Liste aufgeführten deklariert wird, können Sie READ_PHONE_STATE
weiterhin in allen Android-Versionen anfordern. Wenn Sie die Berechtigung READ_PHONE_STATE
jedoch nur für die Methoden in der vorherigen Liste verwenden, aktualisieren Sie Ihre Manifestdatei so:
- Ändern Sie Ihre
READ_PHONE_STATE
-Deklaration 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 Manifest-Deklarations-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 Dokumenten:
Videos
Entwicklung unter Berücksichtigung der neuesten Datenschutzänderungen in Android 11