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.

Einen allgemeinen Überblick über die Android-Berechtigungen finden Sie in der Berechtigungsü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

Ab Android 6.0 (API-Level 23) können Apps Berechtigungen von zur Laufzeit und nicht vor der Installation. Dadurch können Apps Berechtigungen anfordern, wenn die App die Dienste oder Daten benötigt 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 situativer 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 eher je nach Kontext, in dem die Berechtigung angefordert wird, und wenn es eine Diskrepanz gibt vom Zweck Ihrer App zu unterscheiden, Es ist wichtiger, den Nutzenden eine detaillierte Erklärung dafür zu geben, warum Sie um die Berechtigung anzufordern. Nach Möglichkeit sollten Sie eine eine Erläuterung Ihres Antrags sowohl zum Zeitpunkt des Antrags als auch Nachfragen, 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. Zum Beispiel nur nach dem Mikrofon fragen. wenn ein Nutzer auf die Mikrofonschaltfläche klickt. Die Wahrscheinlichkeit, dass Nutzer eine Berechtigung gewähren, 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 mehr funktioniert. Es empfiehlt sich, zu überprüfen, wie viele Nutzer Ablehnungen vornehmen. (z.B. mit Google Analytics), sodass Sie entweder refaktorieren die Berechtigung für Ihre App zu ändern, Erklärung, warum du die Berechtigung benötigst, damit deine App richtig funktioniert. Ich dass Ihre App Ausnahmen verarbeitet, wenn Nutzer in den Einstellungen Berechtigungsanfragen ablehnen oder Berechtigungen deaktivieren.

Erhöhter Transaktionsaufwand

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, die die Umstellung auf einen Standard-Handler erfordern

Einige Apps benötigen Zugriff auf vertrauliche Nutzerdaten im Zusammenhang mit Anruflisten und SMS. Wenn Sie die Berechtigungen für die Anrufliste anfordern möchten und SMS-Nachrichten senden und Ihre App im Play Store veröffentlichen, müssen Sie die Nutzer Ihre App als Standard-Handler für eine zentrale Systemfunktion festzulegen, bevor die diese Laufzeitberechtigungen anfordern.

Weitere Informationen zu Standard-Handlern, einschließlich einer Anleitung zum Anzeigen eines Standard-Handler-Aufforderung angezeigt. Weitere Informationen finden Sie im Leitfaden zu Berechtigungen, die nur in Standard-Handler.

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 denselben Zweck sollten Entwickler ihre Bibliotheken überprüfen und Drittanbieter-SDKs verwenden, die keine unnötigen Berechtigungen nutzen. 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 Standort beschränken

Wenn Ihre App im Hintergrund ausgeführt wird, kann der Zugriff auf Der Standort sollte für die Hauptfunktionen der App und einen klaren Vorteil für die Nutzenden aufzeigen.

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 im App-Manifest angegebenen Berechtigungen hat. 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 richtig funktioniert.

Die folgenden Tipps helfen dir, berechtigungsbezogene Codeprobleme zu finden auf Geräten mit API-Level 23 oder höher:

  • 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 gewährter oder widerrufener Berechtigungen. Eine Kamera-App könnte beispielsweise CAMERA, READ_CONTACTS und ACCESS_FINE_LOCATION in ihrem Manifest auflisten. Du solltest die App mit jeder dieser Berechtigungen testen aktiviert und deaktiviert werden, damit die App alle Berechtigungen reibungslos zu gestalten.
  • 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 entziehen Sie eine oder mehrere Berechtigungen:
      $ adb shell pm [grant|revoke] <permission-name> ...
  • Analysieren Sie Ihre App auf Dienste, die Berechtigungen verwenden.

Weitere Informationen