Berechtigungsanfragen schützen vertrauliche Informationen, die auf einem Gerät verfügbar sind, und sollten nur verwendet werden, wenn der Zugriff auf Informationen für die Funktion Ihrer App erforderlich ist. In diesem Dokument finden Sie Tipps, wie Sie möglicherweise dieselbe (oder eine bessere) Funktionalität erreichen können, ohne auf solche Informationen zugreifen zu müssen. Es ist keine umfassende Erläuterung der Funktionsweise von Berechtigungen im Android-Betriebssystem.
Eine allgemeinere Übersicht über Android-Berechtigungen finden Sie unter Übersicht über Berechtigungen. Ausführliche Informationen zum Umgang mit Berechtigungen in Ihrem Code, finden Sie unter App-Berechtigungen anfordern.
Berechtigungen in Android 6.0 und höher
In Android 6.0 (API-Level 23) und höher können Apps Berechtigungen von dem Nutzer zur Laufzeit anfordern, nicht vor der Installation. So können Apps Berechtigungen anfordern, wenn sie die Dienste oder Daten die durch die Dienste geschützt sind, tatsächlich benötigen. Das ändert zwar nicht unbedingt das allgemeine Verhalten der App, führt aber zu einigen Änderungen im Umgang mit vertraulichen Nutzerdaten:
Mehr situativer Kontext
Nutzer werden zur Laufzeit im Kontext Ihrer App um die Berechtigung für den Zugriff auf die Funktionen aufgefordert, die von diesen Berechtigungsgruppen abgedeckt werden. Nutzer reagieren empfindlicher auf den Kontext, in dem die Berechtigung angefordert wird. Wenn es eine Diskrepanz zwischen dem, was Sie anfordern, und dem Zweck Ihrer App gibt, ist es noch wichtiger, dem Nutzer detailliert zu erklären, warum Sie die Berechtigung anfordern. Wenn möglich, sollten Sie Ihre Anfrage sowohl zum Zeitpunkt der Anfrage als auch in einem Follow-up-Dialog erläutern, wenn der Nutzer die Anfrage ablehnt.
Um die Wahrscheinlichkeit zu erhöhen, dass eine Berechtigungsanfrage akzeptiert wird, sollten Sie nur dann eine Aufforderung anzeigen, wenn eine bestimmte Funktion erforderlich ist. Fordern Sie beispielsweise nur dann den Mikrofon zugriff an, wenn ein Nutzer auf die Mikrofontaste klickt. Nutzer sind eher bereit, eine Berechtigung zu erteilen, die sie erwarten.
Mehr Flexibilität beim Erteilen von Berechtigungen
Nutzer können den Zugriff auf einzelne Berechtigungen zum Zeitpunkt der Anfrage und in den Einstellungen verweigern. Sie sind jedoch möglicherweise überrascht, wenn die Funktionalität dadurch beeinträchtigt wird. Es empfiehlt sich, zu beobachten, wie viele Nutzer Berechtigungen verweigern (z. B. mit Google Analytics). So können Sie Ihre App entweder umgestalten, um nicht auf diese Berechtigung angewiesen zu sein, oder besser erklären, warum Sie die Berechtigung benötigen, damit Ihre App ordnungsgemäß funktioniert. Sie sollten auch dafür sorgen, dass Ihre App Ausnahmen verarbeitet, wenn Nutzer Berechtigungsanfragen ablehnen oder Berechtigungen in den Einstellungen deaktivieren.
Höherer Transaktionsaufwand
Nutzer werden aufgefordert, den Zugriff für Berechtigungsgruppen einzeln und nicht als Gruppe zu gewähren. Daher ist es äußerst wichtig, die Anzahl der angeforderten Berechtigungen zu minimieren. Dadurch steigt der Aufwand für den Nutzer, Berechtigungen zu erteilen, und somit auch die Wahrscheinlichkeit, dass mindestens eine der Anfragen abgelehnt wird.
Berechtigungen, für die Sie als Standard-Handler festgelegt werden müssen
Einige Apps sind auf den Zugriff auf vertrauliche Nutzerinformationen im Zusammenhang mit Anruflisten und SMS-Nachrichten angewiesen. Wenn Sie die Berechtigungen für Anruflisten und SMS-Nachrichten anfordern und Ihre App im Play Store veröffentlichen möchten, müssen Sie den Nutzer auffordern, Ihre App als den Standard-Handler für eine wichtige Systemfunktion festzulegen, bevor Sie diese Laufzeitberechtigungen anfordern.
Bibliotheken kennen, mit denen Sie arbeiten
Manchmal sind Berechtigungen für die Bibliotheken erforderlich, die Sie in Ihrer App verwenden. Für
Anzeigen- und Analysebibliotheken ist beispielsweise möglicherweise der Zugriff auf die
LOCATION Berechtigungsgruppe erforderlich, um die erforderliche
Funktionalität zu implementieren. Aus Nutzersicht stammt die Berechtigungsanfrage jedoch
von Ihrer App, nicht von der Bibliothek.
Nutzer wählen Apps aus, die für dieselbe
Funktionalität weniger Berechtigungen verwenden. Entwickler sollten daher ihre Bibliotheken überprüfen und
SDKs von Drittanbietern auswählen, die keine unnötigen Berechtigungen verwenden. Wenn Sie beispielsweise eine Bibliothek verwenden, die Standortfunktionen bietet, sollten Sie die Berechtigung FINE_LOCATION nur anfordern, wenn Sie standortbezogene Targeting-Funktionen verwenden.
Hintergrundzugriff auf den Standort einschränken
Beide Berechtigungsmodelle testen
In Android 6.0 (API-Level 23) und höher erteilen und widerrufen Nutzer App Berechtigungen zur Laufzeit, nicht bei der Installation der App. Daher müssen Sie Ihre App unter einer größeren Bandbreite von Bedingungen testen. Vor Android 6.0 konnten Sie davon ausgehen, dass Ihre App alle Berechtigungen hat, die im App-Manifest deklariert sind, wenn sie überhaupt ausgeführt wird. Jetzt kann der Nutzer Berechtigungen für jede App aktivieren oder deaktivieren, unabhängig vom API-Level. Sie sollten testen, ob Ihre App in verschiedenen Berechtigungsszenarien ordnungsgemäß funktioniert.
Die folgenden Tipps helfen Ihnen, Code-Probleme im Zusammenhang mit Berechtigungen auf Geräten mit API-Level 23 oder höher zu finden:
- Ermitteln Sie die aktuellen Berechtigungen Ihrer App und die zugehörigen Codepfade.
- Testen Sie Nutzerabläufe für Dienste und Daten, die durch Berechtigungen geschützt sind.
- Testen Sie verschiedene Kombinationen von erteilten oder widerrufenen Berechtigungen. In einer Kamera-App können beispielsweise
CAMERA,READ_CONTACTS, undACCESS_FINE_LOCATIONim Manifest aufgeführt sein. Sie sollten die App mit jeder dieser Berechtigungen testen, um sicherzustellen, dass die App alle Berechtigungskonfigurationen ordnungsgemäß verarbeiten kann. - Verwenden Sie das adb-Tool, um
Berechtigungen über die Befehlszeile zu verwalten:
- Berechtigungen und Status nach Gruppe auflisten:
$ adb shell pm list permissions -d -g
- Eine oder mehrere Berechtigungen erteilen oder widerrufen:
$ adb shell pm [grant|revoke] <permission-name> ...
- Berechtigungen und Status nach Gruppe auflisten:
- Analysieren Sie Ihre App auf Dienste, die Berechtigungen verwenden.
Zusätzliche Ressourcen
- Richtlinien für Material Design für Android-Berechtigungen
- Android Marshmallow 6.0: Asking For Permission: In diesem Video wird das Android-Laufzeitberechtigungsmodell erläutert und gezeigt, wie Sie Nutzer richtig um Berechtigungen bitten.
- Erklären, warum die App Berechtigungen benötigt
- Best Practices für eindeutige Kennzeichnungen