Best Practices für App-Berechtigungen

Berechtigungsanfragen schützen vertrauliche Daten, die auf einem Gerät verfügbar sind. Sie sollten nur verwendet werden, wenn der Zugriff auf Informationen für die Funktion Ihrer App erforderlich ist. Dieses Dokument enthält Tipps, wie Sie dieselbe (oder bessere) Funktionalität erzielen können, ohne auf solche Informationen zugreifen zu müssen. Es wird nicht umfassend erläutert, wie Berechtigungen im Android-Betriebssystem funktionieren.

Allgemeinere Informationen zu Android-Berechtigungen finden Sie in der Berechtigungsübersicht. Weitere Informationen zum Verwenden von Berechtigungen in Ihrem Code finden Sie unter App-Berechtigungen anfordern.

Berechtigungen in Android 6.0 und höher

Unter Android 6.0 (API-Level 23) und höher können Apps Berechtigungen vom Nutzer zur Laufzeit anfordern, anstatt vor der Installation. Anwendungen können dann Berechtigungen anfordern, wenn sie tatsächlich die Dienste oder Daten benötigt, die durch die Dienste geschützt sind. Dies ändert zwar nicht (unbedingt) das allgemeine Verhalten der Anwendung, führt aber zu einigen Änderungen, die für den Umgang mit sensiblen Nutzerdaten relevant sind:

Erhöhter situativer Kontext

Nutzer werden während der Laufzeit im Kontext Ihrer App aufgefordert, die Berechtigung für den Zugriff auf die Funktionen dieser Berechtigungsgruppen zu erhalten. Nutzer reagieren sensibeler für den Kontext, in dem die Berechtigung angefordert wird. Wenn es eine Abweichung zwischen dem, was Sie anfordern und dem Zweck Ihrer App gibt, ist es noch wichtiger, dem Nutzer genau zu erklären, warum Sie die Berechtigung anfordern. Erläutern Sie Ihre Anfrage nach Möglichkeit, sowohl zum Zeitpunkt der Anfrage als auch in einem Folgedialogfeld, wenn der Nutzer die Anfrage ablehnt.

Um die Wahrscheinlichkeit zu erhöhen, dass eine Berechtigungsanfrage akzeptiert wird, sollten Sie nur dann fragen, wenn eine bestimmte Funktion erforderlich ist. Beispielsweise nur dann zum Mikrofonzugriff auffordern, wenn ein Nutzer auf die Mikrofonschaltfläche klickt. Die Wahrscheinlichkeit, dass Nutzer Berechtigungen erteilen, die sie erwarten, ist höher.

Größere Flexibilität beim Gewähren von Berechtigungen

Nutzer können den Zugriff auf einzelne Berechtigungen bei der entsprechenden Anforderung und in den Einstellungen verweigern. Sie können jedoch trotzdem überrascht sein, wenn dadurch Funktionalität beeinträchtigt wird. Es empfiehlt sich, zu beobachten, wie viele Nutzer Berechtigungen ablehnen (z.B. über Google Analytics), damit Sie Ihre App entweder so umgestalten können, dass sie nicht von dieser Berechtigung abhängig ist, oder eine bessere Erklärung liefern, warum Sie die Berechtigung benötigen, damit Ihre App ordnungsgemäß funktioniert. Außerdem solltest du darauf achten, dass deine App Ausnahmen verarbeitet, wenn Nutzer Berechtigungsanfragen ablehnen oder Berechtigungen in den Einstellungen deaktivieren.

Höherer Transaktionsaufwand

Nutzer werden aufgefordert, Berechtigungsgruppen einzeln und nicht als Gruppe Zugriff zu gewähren. Daher ist es äußerst wichtig, die Anzahl der angeforderten Berechtigungen so gering wie möglich zu halten. Dadurch wird der Aufwand für die Nutzer beim Gewähren von Berechtigungen erhöht. Daher erhöht sich die Wahrscheinlichkeit, dass mindestens eine der Anfragen abgelehnt wird.

Berechtigungen, die ein Standard-Handler werden müssen

Einige Apps benötigen Zugriff auf vertrauliche Nutzerinformationen aus Anruflisten und SMS-Nachrichten. Wenn Sie die spezifischen 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 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.

Informiere dich über die Bibliotheken, mit denen du arbeitest

Manchmal sind für die Bibliotheken, die Sie in Ihrer App verwenden, Berechtigungen erforderlich. Anzeigen- und Analysebibliotheken benötigen beispielsweise Zugriff auf die Berechtigungsgruppe LOCATION, um die erforderlichen Funktionen zu implementieren. Aus Sicht des Nutzers stammt die Berechtigungsanfrage jedoch von Ihrer App, nicht aus der Bibliothek.

So wie Nutzer Apps mit weniger Berechtigungen für dieselbe Funktion auswählen, sollten Entwickler ihre Bibliotheken prüfen und Drittanbieter-SDKs auswählen, die keine unnötigen Berechtigungen verwenden. Wenn du beispielsweise eine Bibliothek mit Standortfunktionen verwendest, solltest du die Berechtigung FINE_LOCATION nur dann anfordern, wenn du die Funktion für die standortbasierte Ausrichtung verwendest.

Hintergrundzugriff auf den Standort beschränken

Wenn Ihre App im Hintergrund ausgeführt wird, sollte der Zugriff auf den Standort für die Hauptfunktionen der App von entscheidender Bedeutung sein und einen klaren Nutzen für die Nutzer zeigen.

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 müssen Sie Ihre App unter mehr Bedingungen testen. Vor Android 6.0 konnte man vernünftig davon ausgehen, dass, wenn deine App überhaupt ausgeführt wird, alle Berechtigungen hat, die im App-Manifest deklariert sind. Jetzt kann der Nutzer Berechtigungen für jede App aktivieren oder deaktivieren, unabhängig vom API-Level. Sie sollten in verschiedenen Berechtigungsszenarien testen, ob Ihre App korrekt funktioniert.

Die folgenden Tipps helfen Ihnen dabei, 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 hinweg testen
  • Testen Sie die Berechtigungen mit verschiedenen Kombinationen von gewährten oder widerrufenen Berechtigungen. Eine Kamera-App könnte z. B. CAMERA, READ_CONTACTS und ACCESS_FINE_LOCATION in ihrem Manifest auflisten. Sie sollten die App mit jeder dieser aktivierten und deaktivierten Berechtigungen 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
    • Eine oder mehrere Berechtigungen gewähren oder aufheben:
      $ adb shell pm [grant|revoke] <permission-name> ...
  • Analysiere deine App auf Dienste, die Berechtigungen verwenden.

Weitere Informationen