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.
Allgemeine Informationen zu Android-Berechtigungen finden Sie unter Berechtigungen – Ü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. So können Apps Berechtigungen anfordern, wenn die App tatsächlich die Dienste oder Daten benötigt, die durch die Dienste geschützt sind. Das ändert zwar nicht (notwendigerweise) das Gesamtverhalten der App, hat aber einige Auswirkungen auf den Umgang mit sensiblen Nutzerdaten:
Mehr situativen 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. Sie können beispielsweise nur dann um Mikrofonzugriff bitten, wenn ein Nutzer auf die Mikrofontaste klickt. Nutzer sind eher bereit, eine Berechtigung zuzulassen, die sie erwarten.
Mehr Flexibilität bei der Erteilung 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 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.
Mehr Transaktionen
Nutzer werden aufgefordert, den Zugriff für Berechtigungsgruppen einzeln und nicht als Set zu gewähren. Daher ist es äußerst wichtig, die Anzahl der angeforderten Berechtigungen zu minimieren. 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 Anruflisten 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 Hauptsystemfunktion festzulegen, bevor Sie diese Laufzeitberechtigungen anfordern.
Weitere Informationen zu Standard-Handlersn, einschließlich einer Anleitung zum Einblenden einer Aufforderung für Standard-Handlers, finden Sie im Leitfaden zu Berechtigungen, die nur in Standard-Handlersn verwendet werden.
Bibliotheken kennen, mit denen Sie arbeiten
Manchmal sind Berechtigungen für die Bibliotheken erforderlich, die Sie in Ihrer App verwenden. Beispielsweise benötigen Anzeigen- und Analysebibliotheken möglicherweise Zugriff auf die Berechtigungsgruppe LOCATION
, um die erforderlichen Funktionen zu implementieren. Aus Sicht des Nutzers stammt die Berechtigungsanfrage jedoch von Ihrer App, nicht von der Bibliothek.
Genauso wie Nutzer Apps auswählen, die für dieselben Funktionen 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.
Beide Berechtigungsmodelle testen
Unter Android 6.0 (API-Ebene 23) und höher gewähren und widerrufen Nutzer App-Berechtigungen zur Laufzeit, anstatt dies bei der Installation der App zu tun. 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, wenn sie überhaupt ausgeführt wird, alle Berechtigungen hat, die im App-Manifest deklariert sind. 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 ordnungsgemäß funktioniert.
Mit den folgenden Tipps können Sie Berechtigungsprobleme im Code auf Geräten mit API-Level 23 oder höher 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
- So erteilen oder entziehen 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 sollten.
- Erläutern Sie, warum die App Berechtigungen benötigt.
- Best Practices für eindeutige Kennzeichnungen