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 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 eine gute Idee, zu beobachten, wie viele Nutzer Berechtigungen ablehnen (z. B. mit Google Analytics). So können Sie entweder Ihre App so umgestalten, 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 in Ihrer App verwendeten Bibliotheken erforderlich. 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 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 und ACCESS_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 widerrufen Sie eine oder mehrere Berechtigungen:
      $ adb shell pm [grant|revoke] <permission-name> ...
  • Analysieren Sie Ihre App auf Dienste, die Berechtigungen verwenden.

Weitere Informationen