Berechtigungsanfragen minimieren

Im Rahmen unserer Bemühungen zur Verbesserung der App-Qualität und zum Schutz der Privatsphäre der Nutzer empfehlen wir, die Berechtigungen in Ihren Apps zu minimieren. So können Nutzer hochwertige Apps finden und verwenden, die eine sichere Umgebung bieten.

Wenn Sie Berechtigungen von Nutzern anfordern, wird der Nutzerfluss unterbrochen und Nutzer können Ihre Anfrage ablehnen. Außerdem müssen Sie jedes Mal, wenn Sie eine neue Berechtigung deklarieren, überprüfen, wie Ihre App Nutzerdaten anfordert und weitergibt. Für einige besonders vertrauliche Berechtigungen und APIs müssen Sie in der App offenlegen, dass Sie auf Daten zugreifen und diese erheben, verwenden und weitergeben.

Es gibt mehrere alternative Möglichkeiten, die Berechtigungsnutzung zu minimieren:

  • Deklarieren Sie Berechtigungen, die Informationen zum groben Standort anstelle von Informationen zum genauen Standort bereitstellen, wenn Ihre App nur den ungefähren Standort benötigt.
  • Rufen Sie APIs auf, mit denen Ihre App die gewünschte Funktion ausführen kann, ohne Berechtigungen deklarieren zu müssen.
  • Rufen Sie bestimmte Intents oder Ereignishandler auf, um Funktionen auszuführen, anstatt Berechtigungen zu deklarieren.
  • Das System bietet integrierte Verträge für verschiedene Dateivorgänge und unterstützt auch benutzerdefinierte Verträge.

Wenn Sie eine Berechtigung deklarieren müssen, respektieren Sie immer die Entscheidung des Nutzers und bieten Sie eine Möglichkeit, die Nutzerfreundlichkeit Ihrer App schrittweise zu verringern.

Auf dieser Seite werden mehrere Anwendungsfälle beschrieben, die Ihre App ohne die Deklaration von Berechtigungen erfüllen kann.

Orte in der Nähe anzeigen

Ihre App benötigt möglicherweise den ungefähren Standort des Nutzers. Das ist nützlich, um standortbezogene Informationen wie Restaurants in der Nähe anzuzeigen.

Für einige Anwendungsfälle ist nur eine grobe Schätzung des Gerätestandorts erforderlich. Führen Sie in diesen Situationen einen der folgenden Schritte aus, je nachdem, wie oft Ihre App standortbezogene Informationen benötigt:

  • Wenn Ihre App häufig den Standort benötigt, deklarieren Sie die Berechtigung ACCESS_COARSE_LOCATION. Mit dieser Berechtigung erhalten Sie eine Schätzung des Gerätestandorts von den Standortdiensten, wie in der Dokumentation zur ungefähren Standortgenauigkeit beschrieben.
  • Wenn Ihre App den Standort seltener oder nur einmal benötigt, sollten Sie den Nutzer stattdessen bitten, eine Adresse oder eine Postleitzahl einzugeben.

Andere Anwendungsfälle erfordern eine genauere Schätzung des Standorts eines Geräts. Nur in diesen Situationen ist es in Ordnung, die Berechtigung ACCESS_FINE_LOCATION zu deklarieren.

Dateien erstellen und darauf zugreifen

Unter Android können Sie Dateien erstellen und darauf zugreifen, ohne Berechtigungen für Speicher oder Sensoren deklarieren zu müssen.

Mediendateien öffnen

Ihre App ermöglicht es Nutzern möglicherweise, Fotos und Videos auszuwählen, z. B. für Nachrichtenanhänge oder Profilbilder.

Verwenden Sie zur Unterstützung dieser Funktion die Bildauswahl. Für die Verwendung der Bildauswahl sind keine Laufzeitberechtigungen erforderlich. Wenn ein Nutzer mit der Bildauswahl interagiert, um Fotos oder Videos auszuwählen, die er für Ihre App freigeben möchte, gewährt das System temporären Lesezugriff auf den URI, der den ausgewählten Mediendateien zugeordnet ist.

Wenn Ihre App auf Mediendateien zugreifen muss, ohne die Bildauswahl zu verwenden, müssen Sie keine Speicherberechtigungen deklarieren:

Dokumente öffnen

In Ihrer App werden möglicherweise Dokumente angezeigt, die der Nutzer entweder in Ihrer App oder in einer anderen App erstellt hat. Ein häufiges Beispiel ist eine Textdatei.

In diesem Fall deklarieren Sie READ_EXTERNAL_STORAGE nur für die Kompatibilität mit älteren Geräten. Legen Sie den Wert android:maxSdkVersion auf 28 fest.

Führen Sie je nachdem, mit welcher App das Dokument erstellt wurde, einen der folgenden Schritte aus:

Foto aufnehmen

Nutzer können in Ihrer App mit der vorinstallierten Systemkamera-App Bilder aufnehmen.

In diesem Fall müssen Sie die Berechtigung CAMERA nicht deklarieren. Rufen Sie stattdessen die Intent-Aktion ACTION_IMAGE_CAPTURE auf.

Nimm ein Video auf

Nutzer können in Ihrer App Videos mit der vorinstallierten Systemkamera-App aufnehmen.

In diesem Fall müssen Sie die Berechtigung CAMERA nicht deklarieren. Rufen Sie stattdessen die Intent-Aktion ACTION_VIDEO_CAPTURE auf.

Gerät ermitteln, auf dem eine Instanz Ihrer App ausgeführt wird

Eine bestimmte Instanz Ihrer App muss möglicherweise wissen, auf welchem Gerät sie ausgeführt wird. Das ist nützlich für Apps mit gerätespezifischen Einstellungen oder Nachrichten, z. B. unterschiedliche Playlists für Fernseher und Wearables.

Greifen Sie in dieser Situation nicht direkt auf die IMEI des Geräts zu. Ab Android 10 ist das nicht mehr möglich. Führen Sie stattdessen einen der folgenden Schritte aus:

  • Mit der Instance ID-Bibliothek können Sie eine eindeutige Geräte-ID für die Instanz Ihrer App abrufen.
  • Erstellen Sie eine eigene Kennung, die auf den Speicher Ihrer App beschränkt ist. Verwenden Sie grundlegende Systemfunktionen wie randomUUID().

Über Bluetooth mit einem Gerät koppeln

Ihre App bietet möglicherweise eine verbesserte Nutzung, wenn Daten über Bluetooth auf ein anderes Gerät übertragen werden.

Damit diese Funktion unterstützt wird, dürfen Sie die Berechtigungen ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATIION oder BLUETOOTH_ADMIN nicht deklarieren. Verwenden Sie stattdessen die Kopplung mit Begleitgerät.

Zahlungskartennummer automatisch eingeben

Die Google Play-Dienste bieten eine Bibliothek, mit der Sie automatisch eine Kreditkartennummer eingeben können. Anstatt die Berechtigung CAMERA zu deklarieren, können Sie die Bibliothek zur Erkennung von Debit- und Kreditkarten verwenden.

Anrufe und SMS verwalten

Android und Google Play-Dienste bieten Bibliotheken, mit denen Sie Telefonanrufe und SMS-Nachrichten verwalten können, ohne Berechtigungen für Telefonanrufe oder SMS-Nachrichten deklarieren zu müssen.

Einmal-Sicherheitscode automatisch eingeben

Um die 2‑Faktor-Authentifizierung zu vereinfachen, kann Ihre App den Einmal-Passcode, der zur Bestätigung der Identität an das Gerät eines Nutzers gesendet wird, automatisch eingeben.

Damit diese Funktion auf Geräten mit Google Play-Diensten unterstützt wird, darf die Berechtigung READ_SMS nicht deklariert werden. Verwenden Sie stattdessen die SMS Retriever API.

Wenn Ihre App auf anderen Geräten auf Android 8.0 (API-Level 26) oder höher ausgerichtet ist, generieren Sie mit createAppSpecificSmsToken() ein appspezifisches Token. Übergeben Sie dieses Token an eine andere App oder einen anderen Dienst, die bzw. der eine SMS zur Bestätigung senden kann.

Telefonnummer des Nutzers automatisch eingeben

Um den Verkauf oder Support effizienter zu gestalten, kann Ihre App dem Nutzer ermöglichen, die Telefonnummer seines Geräts automatisch einzugeben.

Damit diese Funktion auf Geräten mit Google Play-Diensten unterstützt wird, darf die Berechtigung READ_PHONE_STATE nicht deklariert werden. Verwenden Sie stattdessen die Bibliothek Phone Number Hint.

Anrufe filtern

Um unnötige Unterbrechungen für den Nutzer zu minimieren, kann Ihre App Telefonanrufe nach Spam filtern.

Um diese Funktion zu unterstützen, deklarieren Sie die Berechtigung READ_PHONE_STATE nicht. Verwenden Sie stattdessen die API CallScreeningService.

Telefonieren

Ihre App bietet möglicherweise die Möglichkeit, einen Anruf zu starten, indem Sie auf die Informationen eines Kontakts tippen.

Verwenden Sie zur Unterstützung dieser Funktion die Intent-Aktion ACTION_DIAL anstelle der Aktion ACTION_CALL. Für ACTION_CALL ist die Berechtigung CALL_PHONE erforderlich, die bei der Installation erteilt werden muss. Dadurch wird verhindert, dass Ihre Anwendung auf Geräten installiert wird, mit denen keine Anrufe getätigt werden können, z. B. auf einigen Tablets.

Medien pausieren, wenn Ihre App unterbrochen wird

Wenn der Nutzer einen Anruf erhält oder ein vom Nutzer konfigurierter Wecker klingelt, sollte die App die Medienwiedergabe pausieren, bis sie den Audiofokus wiedererlangt.

Um diese Funktion zu unterstützen, deklarieren Sie die Berechtigung READ_PHONE_STATE nicht. Implementieren Sie stattdessen den Event-Handler onAudioFocusChange(), der automatisch ausgeführt wird, wenn das System den Audiofokus ändert. Weitere Informationen zum Implementieren des Audiofokus

Barcodes scannen

Android unterstützt die Google Code Scanner API, die auf Google Play-Diensten basiert. Damit können Sie Barcodes decodieren, ohne Kamera-Berechtigungen deklarieren zu müssen. Diese API trägt zum Schutz der Privatsphäre der Nutzer bei und macht es weniger wahrscheinlich, dass Sie eine benutzerdefinierte Benutzeroberfläche für Ihren Barcode-Scanning-Anwendungsfall erstellen müssen.

Die API scannt den Barcode und gibt nur die Scanergebnisse an Ihre App zurück. Bilder werden auf dem Gerät verarbeitet und Google speichert keine Daten oder Scanergebnisse.

Wenn Ihre App komplexe Anwendungsfälle oder Barcodeformate unterstützen muss oder eine benutzerdefinierte Benutzeroberfläche erfordert, verwenden Sie stattdessen die ML Kit Barcode Scanning API.

Nicht verwendete Berechtigungen zurücksetzen

Unter Android gibt es mehrere Möglichkeiten, nicht verwendete Laufzeitberechtigungen auf den Standardstatus „Verweigert“ zurückzusetzen.

Designrichtlinien lesen

Laufzeitberechtigungen anfordern

Wenn Sie festgestellt haben, dass Ihre App Laufzeitberechtigungen deklarieren und anfordern muss, folgen Sie dazu einem bestimmten Workflow.

Designrichtlinien lesen

Erläutern Sie, warum Ihre App Berechtigungen benötigt

Wenn Sie requestPermissions() verwenden, wird ein Dialogfeld angezeigt, in dem angegeben wird, welche Berechtigungen Ihre App verwenden möchte. Es wird jedoch nicht erklärt, warum. Das kann für den Nutzer verwirrend sein.

Weitere Informationen und Empfehlungen dazu, wie und wann dieses Dialogfeld angezeigt werden sollte, finden Sie in den Designrichtlinien.

Umgang mit abgelehnten Berechtigungen

Ihre App sollte Nutzern vor und nach der Entscheidung, eine Berechtigung zu verweigern, die Auswirkungen dieser Entscheidung erläutern.

Designrichtlinien lesen