Best Practices für App-Berechtigungen

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.

Weitere Informationen zu Standard-Handlern und Anleitungen zum Anzeigen einer Aufforderung für Standard-Handler für Nutzer finden Sie im Leitfaden zu Berechtigungen, die nur in Standard-Handlern verwendet werden.

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

Wenn Ihre App im Hintergrund ausgeführt wird, sollte der Zugriff auf den Standort für die Hauptfunktion der App entscheidend sein und den Nutzern einen klaren Vorteil bieten.

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, und ACCESS_FINE_LOCATION im 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> ...
  • Analysieren Sie Ihre App auf Dienste, die Berechtigungen verwenden.

Zusätzliche Ressourcen