Best Practices für App-Berechtigungen

Berechtigungsanfragen schützen sensible 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 dieselbe (oder eine bessere) Funktionalität erreichen können, ohne auf solche Informationen zugreifen zu müssen. Es wird nicht erschöpfend erläutert, wie Berechtigungen im Android-Betriebssystem funktionieren.

Einen allgemeineren Überblick über Android-Berechtigungen finden Sie unter Berechtigungen – Übersicht. 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 vom Nutzer zur Laufzeit anfordern, nicht vor der Installation. So können Apps Berechtigungen anfordern, wenn sie die durch die Dienste geschützten Dienste oder Daten tatsächlich benötigen. Das ändert zwar nicht unbedingt das Verhalten der App insgesamt, aber es gibt einige Änderungen, die sich auf die Verarbeitung sensibler Nutzerdaten auswirken:

Mehr situativer Kontext

Nutzer werden zur Laufzeit im Kontext Ihrer App um die Berechtigung zum Zugriff auf die Funktionen aufgefordert, die von diesen Berechtigungsgruppen abgedeckt werden. Nutzer reagieren sensibler 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 sowohl zum Zeitpunkt der Anfrage als auch in einem Folgedialog, wenn der Nutzer die Anfrage ablehnt, eine Erklärung für Ihre Anfrage geben.

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 Mikrofonzugriff an, wenn ein Nutzer auf die Mikrofonschaltfläche klickt. Nutzer erteilen eher Berechtigungen, 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, die Anzahl der Nutzer, die Berechtigungen ablehnen, im Blick zu behalten (z. B. mit Google Analytics). So können Sie Ihre App entweder so umgestalten, dass sie nicht von der Berechtigung abhängig ist, oder besser erklären, warum Sie die Berechtigung benötigen, damit Ihre App richtig funktioniert. Außerdem sollten Sie 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 zu gewähren und nicht als Set. Daher ist es äußerst wichtig, die Anzahl der angeforderten Berechtigungen zu minimieren. Dadurch wird die Belastung für Nutzer beim Erteilen von Berechtigungen erhöht und somit auch die Wahrscheinlichkeit, dass mindestens eine der Anfragen abgelehnt wird.

Berechtigungen, für die eine Registrierung als Standard-Handler erforderlich ist

Einige Apps sind auf den Zugriff auf vertrauliche Nutzerinformationen in Bezug auf Anruflisten und SMS 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 Standard-Handler für eine wichtige Systemfunktion festzulegen, bevor Sie diese Laufzeitberechtigungen anfordern.

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

Wissen, mit welchen Bibliotheken 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 Zugriff auf die Berechtigungsgruppe LOCATION erforderlich, um die erforderlichen Funktionen zu implementieren. Aus Nutzersicht stammt die Berechtigungsanfrage jedoch von Ihrer App und 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, dürfen Sie die Berechtigung FINE_LOCATION nur anfordern, wenn Sie standortbezogene Targeting-Funktionen nutzen.

Hintergrundzugriff auf den Standort einschränken

Wenn Ihre App im Hintergrund ausgeführt wird, muss der Zugriff auf den Standort für die Hauptfunktion der App zwingend erforderlich sein und den Nutzern einen deutlichen Nutzen bieten.

Beide Berechtigungsmodelle testen

In Android 6.0 (API-Level 23) und höher erteilen und widerrufen Nutzer App-Berechtigungen zur Laufzeit und nicht bei der Installation der App. Daher müssen Sie Ihre App unter einer Vielzahl 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. Der Nutzer kann jetzt Berechtigungen für jede App aktivieren oder deaktivieren, unabhängig vom API-Level. Sie sollten Ihre App in verschiedenen Berechtigungsszenarien testen, um sicherzustellen, dass sie korrekt funktioniert.

Die folgenden Tipps helfen Ihnen, auf Geräten mit API-Level 23 oder höher Code-Probleme im Zusammenhang mit Berechtigungen zu finden:

  • Ermitteln Sie die aktuellen Berechtigungen Ihrer App und die zugehörigen Codepfade.
  • Testen Sie Nutzerabläufe für berechtigungsgeschützte Dienste und Daten.
  • Testen Sie verschiedene Kombinationen von erteilten oder widerrufenen Berechtigungen. Eine Kamera-App kann beispielsweise CAMERA, READ_CONTACTS und ACCESS_FINE_LOCATION in ihrem Manifest auflisten. Sie sollten die App mit jeder dieser Berechtigungen testen, sowohl aktiviert als auch deaktiviert, um sicherzustellen, dass die App alle Berechtigungskonfigurationen problemlos 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
    • So erteilen oder entziehen Sie eine oder mehrere Berechtigungen:
      $ adb shell pm [grant|revoke] <permission-name> ...
  • Analysieren Sie Ihre App auf Dienste, die Berechtigungen verwenden.

Zusätzliche Ressourcen