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:
- Wenn Sie auf Mediendateien zugreifen, die von Ihrer App erstellt wurden, hat Ihre App bereits Zugriff auf diese Dateien im Media Store.
- Wenn Sie auf Mediendateien zugreifen, die von anderen Apps erstellt wurden, verwenden Sie das Storage Access Framework.
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:
- Wenn der Nutzer das Dokument in Ihrer App erstellt hat, greifen Sie direkt darauf zu.
- Wenn der Nutzer das Dokument in einer anderen App erstellt hat, verwenden Sie das Storage Access Framework.
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