Aktualisierte Berechtigungen unter Android 11

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 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 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, wird Ihrer App eine vorübergehende einmalige Berechtigung gewährt.

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 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 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.

Weitere Informationen dazu, wie das System Berechtigungen für nicht verwendete Anwendungen automatisch zurücksetzt

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 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 für Berechtigungen erschwert, die Nutzer abgelehnt haben.

Mit dem folgenden Befehl können Sie prüfen, ob einer App dauerhaft Berechtigungen 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 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. 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 Berechtigungen für Android-Apps finden Sie auf der Referenzseite für die permissions API.

Weitere Informationen zum Umgang mit der Ablehnung von Berechtigungen

Änderungen am Systembenachrichtigungsfenster

Unter Android 11 werden verschiedene Änderungen daran vorgenommen, wie Apps die Berechtigung SYSTEM_ALERT_WINDOW gewährt wird. 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 und SYSTEM_ALERT_WINDOW anfordern, erhalten die Berechtigung automatisch. Wenn die App ROLE_CALL_SCREENING verliert, verliert sie die Berechtigung.

  • Jede App, die den Bildschirm über eine MediaProjection erfasst und SYSTEM_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 Anwendungen 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 werden Nutzer über ACTION_MANAGE_OVERLAY_PERMISSION-Intents immer zum Bildschirm Einstellungen der obersten Ebene weitergeleitet, auf dem sie die SYSTEM_ALERT_WINDOW-Berechtigungen 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, das den Nutzer zu einem App-spezifischen Bildschirm zum Verwalten der Berechtigung weiterleitete. 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 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.

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 nur für die Methoden in der vorherigen Liste verwenden, aktualisieren Sie Ihre Manifestdatei jedoch so:

  1. Ändere die 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 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 mit den neuesten Datenschutzänderungen in Android 11