Berechtigungsupdates unter Android 11

Mit Android 11 haben Nutzer die Möglichkeit, detailliertere Berechtigungen für Standort, Mikrofon und Kamera festzulegen. 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 von ihnen deklarierten Berechtigungen aktualisieren, wenn sie das Systembenachrichtigungsfenster verwenden oder Informationen zu Telefonnummern lesen.

Einmalige Berechtigungen

Ab Android 11 enthält das für Nutzer sichtbare Berechtigungsdialogfeld die Option Nur dieses Mal, wenn deine App eine Berechtigung für den Standort, das Mikrofon oder die Kamera anfordert. Wenn der Nutzer diese Option im Dialogfeld auswählt, wird Ihrer App eine temporäre einmalige Berechtigung gewährt.

Weitere Informationen zum Umgang mit 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 vertraulichen Laufzeitberechtigungen, die der Nutzer Ihrer App gewährt hat, automatisch zurückgesetzt wird. Diese Aktion hat denselben Effekt, als ob der Nutzer eine Berechtigung in den Systemeinstellungen sieht und die Zugriffsebene der App zu Ablehnen ändert. 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 der Berechtigungen nicht verwendeter Apps durch das System

Sichtbarkeit des Berechtigungsdialogs

Wenn Nutzer ab Android 11 während der Lebensdauer der App-Installation auf einem Gerät mehrmals auf Ablehnen für eine bestimmte Berechtigung tippen, wird ihnen das Dialogfeld für Systemberechtigungen nicht angezeigt, wenn die App diese Berechtigung noch einmal anfordert. Die Aktion des Nutzers impliziert „Nicht mehr fragen“. In früheren Versionen wurde das Dialogfeld für Systemberechtigungen jedes Mal angezeigt, wenn Ihre App eine Berechtigung anforderte, es sei denn, der Nutzer hatte zuvor das Kästchen oder die Option „Nicht mehr fragen“ ausgewählt. Durch diese Verhaltensänderung in Android 11 werden wiederholte Anfragen nach Berechtigungen verhindert, die Nutzer abgelehnt haben.

Verwenden Sie den folgenden Befehl, um zu Fehlerbehebungs- und Testzwecken zu ermitteln, ob einer App 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, sind von USER_SET gekennzeichnet. Berechtigungen, die durch zweimaliges Auswählen von Ablehnen dauerhaft abgelehnt wurden, werden von USER_FIXED gekennzeichnet.

Beim Testen kann es sinnvoll sein, diese Flags zurückzusetzen, damit die Tester nicht überrascht werden, wenn das Anfragedialogfeld nicht angezeigt wird. Verwenden Sie dazu 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 Berechtigungen für Android-Apps finden Sie auf der Referenzseite der Entitlements API.

Weitere Informationen zum Umgang mit abgelehnten Berechtigungen in Apps

Änderungen des Systembenachrichtigungsfensters

Unter Android 11 werden verschiedene Änderungen daran vorgenommen, wie Apps die Berechtigung SYSTEM_ALERT_WINDOW erhalten. Die Änderungen dienen dem Schutz der Nutzer, indem die Berechtigungserteilung bewusster gestaltet wird.

Bestimmten Apps wird auf Anfrage automatisch die Berechtigung SYSTEM_ALERT_WINDOW gewährt

Bestimmten Klassen von Apps wird auf Anfrage automatisch die Berechtigung SYSTEM_ALERT_WINDOW gewährt:

  • Jeder App, die ROLE_CALL_SCREENING hat und SYSTEM_ALERT_WINDOW anfordert, wird die Berechtigung automatisch gewährt. Wenn die App ROLE_CALL_SCREENING verliert, verliert sie die Berechtigung.

  • Jede App, die den Bildschirm über ein MediaProjection aufnimmt und SYSTEM_ALERT_WINDOW anfordert, erhält die Berechtigung automatisch, es sei denn, der Nutzer hat die Berechtigung für die App ausdrücklich verweigert. Wenn die App die Bildschirmaufnahme beendet, verliert sie die Berechtigung. Dieser Anwendungsfall ist in erster Linie für Livestreaming-Apps von Spielen 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.

Mit MANAGE_OVERLAY_PERMISSION-Intents wird der Nutzer immer zum Bildschirm mit den Systemberechtigungen weitergeleitet

Ab Android 11 wird der Nutzer durch ACTION_MANAGE_OVERLAY_PERMISSION-Intents immer zum Bildschirm Einstellungen der obersten Ebene weitergeleitet. Dort kann er die SYSTEM_ALERT_WINDOW-Berechtigungen für Apps erteilen oder widerrufen. package:-Daten im Intent werden ignoriert.

In früheren Android-Versionen konnte der Intent ACTION_MANAGE_OVERLAY_PERMISSION ein Paket angeben, das den Nutzer zu einem App-spezifischen Bildschirm zur Verwaltung der Berechtigung weiterleitete. Diese Funktion wird ab Android 11 nicht unterstützt. Stattdessen muss der Nutzer zuerst die App auswählen, der er die Berechtigung erteilen oder entziehen möchte. Diese Änderung soll Nutzer schützen, indem die Berechtigungserteilung bewusster erfolgt.

Telefonnummern

Unter Android 11 wird die telefonbezogene Berechtigung geändert, die deine 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 anstelle der Berechtigung READ_PHONE_STATE anfordern.

Wenn deine App READ_PHONE_STATE für den Aufruf anderer Methoden als der in der vorherigen Liste deklariert, 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 so:

  1. Ändere deine Deklaration von READ_PHONE_STATE so, dass deine App die Berechtigung nur unter Android 10 (API-Level 29) und niedriger verwendet.
  2. Fügen Sie die Berechtigung READ_PHONE_NUMBERS hinzu.

Das folgende Manifestdeklaration-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 Materialien:

Videos

Aktuelle Datenschutzänderungen für Android 11