Best Practices für App-Berechtigungen

Berechtigungsanfragen schützen vertrauliche Informationen auf einem Gerät und sollten nur verwendet werden, wenn der Zugriff auf Informationen für die Funktionsweise Ihrer App erforderlich ist. Dieses Dokument enthält Tipps dazu, wie Sie dieselbe (oder bessere) Funktionalität ohne Zugriff auf diese Informationen nutzen können. Es wird nicht umfassend auf die Funktionsweise von Berechtigungen im Android-Betriebssystem erörtert.

Einen allgemeinen Überblick über die Android-Berechtigungen finden Sie in der Berechtigungsübersicht. Weitere Informationen zum Arbeiten mit Berechtigungen in Ihrem Code finden Sie unter App-Berechtigungen anfordern.

Berechtigungen unter 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 (statt vor der Installation). Dadurch können Apps Berechtigungen anfordern, wenn sie die Dienste oder Daten, die durch die Dienste geschützt werden, tatsächlich benötigen. Dadurch ändert sich zwar nicht (unbedingt) das allgemeine Anwendungsverhalten, aber es gibt einige Änderungen, die für die Verarbeitung vertraulicher Nutzerdaten relevant sind:

Mehr situativer Kontext

Nutzer werden zur Laufzeit im Kontext Ihrer App aufgefordert, die Berechtigung zum Zugriff auf die von diesen Berechtigungsgruppen abgedeckten Funktionen zu erteilen. Nutzer reagieren empfindlicher auf den Kontext, in dem die Berechtigung angefordert wird. Wenn es eine Diskrepanz zwischen dem von dir angeforderten und dem Zweck deiner App gibt, ist es noch wichtiger, dem Nutzer ausführlich zu erklären, warum du die Berechtigung anfordert. Wenn möglich, solltest du deine Anfrage sowohl zum Zeitpunkt der Anfrage als auch in einem Folgedialogfeld erklären, wenn der Nutzer die Anfrage ablehnt.

Um die Wahrscheinlichkeit zu erhöhen, dass eine Berechtigungsanfrage angenommen wird, sollten Sie nur dann eine Anfrage stellen, wenn eine bestimmte Funktion erforderlich ist. Beispielsweise wird der Mikrofonzugriff nur dann angefordert, wenn der Nutzer auf die Mikrofonschaltfläche klickt. Nutzer erlauben eher eine erwartete Berechtigung.

Mehr Flexibilität beim Gewähren von Berechtigungen

Nutzer können den Zugriff auf einzelne Berechtigungen verweigern, wenn sie angefordert werden und in den Einstellungen. Sie sind jedoch möglicherweise dennoch überrascht, wenn dadurch die Funktionalität beeinträchtigt wird. Du solltest beobachten, wie viele Nutzer Berechtigungen verweigern (z. B. über Google Analytics). So kannst du entweder deine App so refaktorieren, dass diese Berechtigung nicht mehr benötigt wird, oder besser erklären, warum deine App richtig funktioniert. Außerdem solltest du darauf achten, dass deine App Ausnahmen verarbeitet, wenn Nutzer Berechtigungsanfragen ablehnen oder Berechtigungen in den Einstellungen deaktivieren.

Erhöhter Transaktionsaufwand

Nutzer werden gebeten, den Zugriff für Berechtigungsgruppen einzeln und nicht als Satz zu gewähren. Daher ist es sehr wichtig, die Anzahl der angeforderten Berechtigungen so gering wie möglich zu halten. Dies erhöht den Nutzer-Aufwand für das Erteilen von Berechtigungen und erhöht somit die Wahrscheinlichkeit, dass mindestens eine der Anfragen abgelehnt wird.

Berechtigungen, die die Umstellung auf einen Standard-Handler erfordern

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

Wissen, mit welchen Bibliotheken 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 du beispielsweise eine Bibliothek mit Standortfunktionen verwendest, solltest du die Berechtigung FINE_LOCATION nur dann anfordern, wenn du die Funktion zur standortbasierten Ausrichtung verwendest.

Hintergrundzugriff auf Standort beschränken

Wenn deine 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.

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 konnte man davon ausgehen, dass eine App, die überhaupt ausgeführt wird, alle im App-Manifest deklarierten Berechtigungen hat. Jetzt können Nutzer Berechtigungen für jede App unabhängig vom API-Level aktivieren oder deaktivieren. Du solltest testen, ob deine App in verschiedenen Berechtigungsszenarien richtig funktioniert.

Die folgenden Tipps helfen dir, Codeprobleme 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.
  • Nutzerflüsse für Dienste und Daten mit Berechtigungen testen
  • Testen Sie verschiedene Kombinationen gewährter oder widerrufener Berechtigungen. Eine Kamera-App könnte beispielsweise in ihrem Manifest CAMERA, READ_CONTACTS und ACCESS_FINE_LOCATION auflisten. Sie sollten die App mit jeder dieser Berechtigungen testen, um sicherzustellen, dass die App alle Berechtigungskonfigurationen ordnungsgemäß verarbeiten kann.
  • Mit dem adb-Tool 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> ...
  • App auf Dienste analysieren, die Berechtigungen verwenden.

Zusätzliche Ressourcen