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 dazu, wie Sie dieselben (oder bessere) Funktionen erzielen können, ohne auf solche Informationen zugreifen zu müssen. Es ist keine umfassende Erläuterung der Funktionsweise von Berechtigungen im Android-Betriebssystem.
Einen allgemeinen Überblick über die Android-Berechtigungen finden Sie in der Berechtigungsübersicht. Ausführliche Informationen zum Umgang mit Berechtigungen in Ihrem Code finden Sie unter App-Berechtigungen anfordern.
Berechtigungen unter Android 6.0 und höher
Unter Android 6.0 (API-Ebene 23) und höher können Apps Berechtigungen nicht mehr vor der Installation, sondern erst zur Laufzeit vom Nutzer anfordern. Dadurch können Apps Berechtigungen anfordern, wenn sie die Dienste oder Daten, die durch die Dienste geschützt werden, tatsächlich benötigen. Das ändert zwar nicht (notwendigerweise) das Gesamtverhalten der App, hat aber einige Auswirkungen auf den Umgang mit sensiblen Nutzerdaten:
Mehr situativer Kontext
Nutzer werden während der Laufzeit im Kontext Ihrer App aufgefordert, die Berechtigung zum Zugriff auf die von diesen Berechtigungsgruppen abgedeckten Funktionen zu erteilen. Nutzer sind empfindlicher in Bezug auf den Kontext, in dem die Berechtigung angefordert wird. Wenn die angeforderte Berechtigung nicht zum Zweck Ihrer App passt, ist es noch wichtiger, den Nutzern ausführlich zu erklären, warum Sie die Berechtigung anfordern. Sie sollten Ihre Anfrage nach Möglichkeit sowohl bei der Anfrage als auch in einem Folgedialog 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. Beispielsweise wird der Mikrofonzugriff nur dann angefordert, wenn ein Nutzer auf die Mikrofonschaltfläche klickt. Nutzer sind eher bereit, eine Berechtigung zuzulassen, die sie erwarten.
Mehr Flexibilität beim Gewähren von Berechtigungen
Nutzer können den Zugriff auf einzelne Berechtigungen bei der Anfrage und in den Einstellungen verweigern. Sie sind aber möglicherweise überrascht, wenn die Funktion dadurch nicht mehr funktioniert. Es ist empfehlenswert, zu beobachten, wie viele Nutzer Berechtigungen ablehnen (z. B. mit Google Analytics). So können Sie entweder Ihre App so umstrukturieren, dass sie nicht mehr von dieser Berechtigung abhängt, oder eine bessere Erklärung dafür liefern, warum Sie die Berechtigung für die ordnungsgemäße Funktion Ihrer App benötigen. Außerdem sollten Sie dafür sorgen, dass Ihre App Ausnahmen verarbeitet, wenn Nutzer Berechtigungsanfragen ablehnen oder Berechtigungen in den Einstellungen deaktivieren.
Erhöhter Transaktionsaufwand
Nutzer werden aufgefordert, den Zugriff für Berechtigungsgruppen einzeln und nicht als Set zu gewähren. Daher ist es sehr wichtig, die Anzahl der angeforderten Berechtigungen so gering wie möglich zu halten. Das erhöht die Belastung der Nutzer beim Gewähren von Berechtigungen und damit die Wahrscheinlichkeit, dass mindestens eine der Anfragen abgelehnt wird.
Berechtigungen, für die Sie Standard-Handler werden müssen
Einige Apps benötigen Zugriff auf vertrauliche Nutzerdaten im Zusammenhang mit Anruflisten und SMS. Wenn Sie die Berechtigungen für Anrufprotokolle und SMS anfordern und Ihre App im Play Store veröffentlichen möchten, müssen Sie den Nutzer auffordern, Ihre App als Standard-Handler für eine Kernsystemfunktion festzulegen, bevor Sie diese Laufzeitberechtigungen anfordern.
Weitere Informationen zu Standard-Handlern, einschließlich einer Anleitung zum Anzeigen einer Standard-Handler-Aufforderung für Nutzer, finden Sie im Leitfaden zu Berechtigungen, die nur in Standard-Handlern verwendet werden.
Bibliotheken kennen, mit denen Sie arbeiten
Manchmal sind für die Bibliotheken, die du in deiner App verwendest, Berechtigungen erforderlich. Beispielsweise benötigen Werbe- und Analysebibliotheken möglicherweise Zugriff auf die Berechtigungsgruppe LOCATION
, um die erforderlichen Funktionen zu implementieren. Aus Nutzersicht stammt die Berechtigungsanfrage jedoch von Ihrer Anwendung und nicht von der Bibliothek.
So wie Nutzer Apps auswählen, die für dieselbe Funktionalität weniger Berechtigungen verwenden, sollten Entwickler ihre Bibliotheken prü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 die Funktion für das standortbasierte Targeting verwenden.
Hintergrundzugriff auf die Standortermittlung einschränken
Wenn Ihre App im Hintergrund ausgeführt wird, sollte der Zugriff auf die Standortermittlung für die Hauptfunktion der App entscheidend sein und Nutzern einen klaren Vorteil bieten.
Für beide Berechtigungsmodelle testen
Unter Android 6.0 (API-Level 23) und höher gewähren und widerrufen Nutzer App-Berechtigungen während der Laufzeit, anstatt dies bei der Installation der App zu tun. Daher musst du deine App unter einer größeren Bandbreite von Bedingungen testen. Vor Android 6.0 konnten Sie davon ausgehen, dass Ihre App, wenn sie überhaupt ausgeführt wird, alle im App-Manifest angegebenen Berechtigungen hat. Jetzt kann der Nutzer Berechtigungen für alle Apps aktivieren oder deaktivieren, unabhängig von der API-Ebene. Sie sollten testen, ob Ihre App in verschiedenen Berechtigungsszenarien richtig funktioniert.
Die folgenden Tipps helfen dir, berechtigungsbezogene Codeprobleme auf Geräten mit API-Level 23 oder höher zu finden:
- Ermitteln Sie die aktuellen Berechtigungen Ihrer App und die zugehörigen Codepfade.
- Nutzerflüsse über berechtigungsgeschützte Dienste und Daten testen
- Testen Sie verschiedene Kombinationen von erteilten oder widerrufenen Berechtigungen. Eine Kamera-App könnte beispielsweise
CAMERA
,READ_CONTACTS
undACCESS_FINE_LOCATION
in ihrem Manifest auflisten. Sie sollten die App mit jeder dieser Berechtigungen aktiviert und deaktiviert testen, um sicherzustellen, dass die App alle Berechtigungskonfigurationen ordnungsgemäß verarbeiten kann. - Mit dem Tool adb können Sie Berechtigungen über die Befehlszeile verwalten:
- Berechtigungen und Status nach Gruppe auflisten:
$ adb shell pm list permissions -d -g
- Gewähren oder widerrufen Sie eine oder mehrere Berechtigungen:
$ adb shell pm [grant|revoke] <permission-name> ...
- Berechtigungen und Status nach Gruppe auflisten:
- Analysieren Sie Ihre App auf Dienste, die Berechtigungen verwenden.
Weitere Informationen
- Material Design-Richtlinien für Android-Berechtigungen
- Android Marshmallow 6.0: Asking For Permission (Android Marshmallow 6.0: Berechtigungen anfordern): In diesem Video wird das Android-Laufzeitberechtigungsmodell und die richtige Art und Weise erläutert, wie Nutzer um Berechtigungen gebeten werden.
- Erläutern Sie, warum die App Berechtigungen benötigt.
- Best Practices für eindeutige IDs