Im Rahmen unserer Bemühungen, die App-Qualität zu verbessern und die Privatsphäre der Nutzer zu schützen, empfehlen wir, die Verwendung von Berechtigungen in Ihren Apps zu minimieren. So können Nutzer hochwertige Apps entdecken und verwenden, die eine sichere Nutzerumgebung 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, müssen Sie ü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 Verwendung von Berechtigungen zu minimieren:
- Deklarieren Sie Berechtigungen, die ungefähre Standortinformationen liefern, anstatt genaue Standortinformationen, 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 zu deklarieren.
- 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.
Auf dieser Seite werden mehrere Anwendungsfälle beschrieben, die Ihre App ohne 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. In diesen Fällen haben Sie je nachdem, wie oft Ihre App standortbezogene Informationen benötigt, folgende Möglichkeiten:
- Wenn Ihre App häufig den Standort benötigt, deklarieren Sie die
ACCESS_COARSE_LOCATIONBerechtigung. Mit dieser Berechtigung erhalten Sie eine Schätzung des Gerätestandorts von den Standort diensten, wie in der Dokumentation zur ungefähren Standort genauigkeit beschrieben. - Wenn Ihre App den Standort seltener oder nur einmal benötigt, können Sie den Nutzer stattdessen bitten, eine Adresse oder eine Postleitzahl einzugeben.
Für andere Anwendungsfälle ist eine genauere Schätzung des Gerätestandorts erforderlich. In diesen
Fällen ist es in Ordnung, die
ACCESS_FINE_LOCATION
Berechtigung 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 Foto auswahl. Für die Verwendung der Bildauswahl sind keine Laufzeitberechtigungen erforderlich. Wenn ein Nutzer mit der Fotoauswahl 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 mit den ausgewählten Mediendateien verknüpft ist.
Wenn Ihre App auf Mediendateien zugreifen muss, ohne die Fotoauswahl 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
Ihre App zeigt möglicherweise Dokumente an, die der Nutzer entweder in Ihrer App oder in einer anderen App erstellt hat. Ein häufiges Beispiel ist eine Textdatei.
Deklarieren Sie in diesem Fall die
READ_EXTERNAL_STORAGE
nur für die Kompatibilität mit älteren Geräten. Legen Sie android:maxSdkVersion auf 28 fest.
Je nachdem, in welcher App das Dokument erstellt wurde, haben Sie folgende Möglichkeiten:
- 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.
Deklarieren Sie in diesem Fall nicht die Berechtigung CAMERA. Rufen Sie stattdessen die
ACTION_IMAGE_CAPTURE
Intent-Aktion auf.
Video aufnehmen
Nutzer können in Ihrer App mit der vorinstallierten Systemkamera-App Videos aufnehmen.
Deklarieren Sie in diesem Fall nicht die Berechtigung CAMERA. Rufen Sie stattdessen die
ACTION_VIDEO_CAPTURE
Intent-Aktion auf.
Gerät identifizieren, 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 TV-Geräte und Wearables.
Greifen Sie in diesem Fall nicht direkt auf die IMEI des Geräts zu. Ab Android 10 ist das nicht mehr möglich. Stattdessen haben Sie folgende Möglichkeiten:
- Rufen Sie mit der Instance ID -Bibliothek eine eindeutige Geräte-ID für die Instanz Ihrer App ab.
- Erstellen Sie eine eigene ID, 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 Nutzererfahrung, indem Daten über Bluetooth an ein anderes Gerät übertragen werden.
Deklarieren Sie zur Unterstützung dieser Funktion nicht die Berechtigungen ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATIION oder BLUETOOTH_ADMIN. Verwenden Sie stattdessen die
Gerätekopplung von Begleitgeräten.
Zahlungskartennummer automatisch eingeben
Die Google Play-Dienste bieten eine Bibliothek, mit der Sie automatisch eine Zahlungskartennummer 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 die Google Play-Dienste bieten Bibliotheken, mit denen Sie Anrufe und SMS verwalten können, ohne Berechtigungen für Anrufe oder SMS deklarieren zu müssen.
Einmaliger Sicherheitscode automatisch eingeben
Um den Workflow der 2-Faktor-Authentifizierung zu optimieren, kann Ihre App den einmaligen Sicherheitscode automatisch eingeben, der an das Gerät eines Nutzers gesendet wird, um seine Identität zu bestätigen.
Deklarieren Sie zur Unterstützung dieser Funktion auf Geräten mit Google Play-Diensten nicht die Berechtigung READ_SMS. Verwenden Sie stattdessen die SMS Retriever
API.
Wenn Ihre App auf anderen Geräten Android 8.0 (API-Level 26) oder
höher verwendet, generieren Sie mit
createAppSpecificSmsToken() ein app-spezifisches Token. Übergeben Sie dieses Token an eine andere App oder einen anderen Dienst, der eine Bestätigungs-SMS senden kann.
Telefonnummer eines Nutzers bestätigen
Die empfohlene Lösung, um die Telefonnummer eines Nutzers sicher zu bestätigen, ist die Digital Credentials API. Wenn Sie diese API direkt oder über eine Vielzahl kompatibler Aggregatoren verwenden, können Sie Nutzerkontoinformationen zuverlässig bestätigen, ohne vertrauliche Geräteberechtigungen anzufordern. Eine Firebase-Lösung finden Sie unter Bestätigung der Telefonnummer in Firebase.
Alternativ können Sie die Telefonnummer eines Nutzers mit einem einmaligen Sicherheitscode bestätigen, indem Sie die SMS Retriever API verwenden.
Telefonnummer des Nutzers automatisch eingeben
Um den Vertrieb oder Support effizienter zu gestalten, kann Ihre App dem Nutzer ermöglichen, die Telefonnummer seines Geräts automatisch einzugeben.
Deklarieren Sie zur Unterstützung dieser Funktion auf Geräten mit Google Play-Diensten nicht die Berechtigung READ_PHONE_STATE. Verwenden Sie stattdessen die Telefonnummer
Hinweis Bibliothek.
Anrufe filtern
Um unnötige Unterbrechungen für den Nutzer zu minimieren, kann Ihre App Anrufe auf Spam filtern.
Deklarieren Sie zur Unterstützung dieser Funktion nicht die Berechtigung READ_PHONE_STATE.
Verwenden Sie stattdessen die
CallScreeningService API.
Anrufe tätigen
Ihre App bietet möglicherweise die Möglichkeit, einen Anruf zu tätigen, indem Sie auf die Informationen eines Kontakts tippen.
Verwenden Sie zur Unterstützung dieser Funktion die
ACTION_DIAL Intent-Aktion
anstelle der ACTION_CALL Aktion. ACTION_CALL erfordert die Berechtigung CALL_PHONE zur Installationszeit, wodurch verhindert wird, dass Geräte, die keine Anrufe tätigen können, z. B. einige Tablets, Ihre App installieren.
Medien pausieren, wenn Ihre App unterbrochen wird
Wenn der Nutzer einen Anruf erhält oder ein vom Nutzer konfigurierter Alarm ausgelöst wird, sollte Ihre App die Wiedergabe von Medien pausieren, bis sie den Audiofokus wiedererlangt.
Deklarieren Sie zur Unterstützung dieser Funktion nicht die Berechtigung READ_PHONE_STATE. Implementieren Sie stattdessen den
onAudioFocusChange()
Event-Handler, der automatisch ausgeführt wird, wenn das System den Audiofokus verschiebt.
Weitere Informationen zur Implementierung des Audiofokus
Barcodes scannen
Android unterstützt die Google Code Scanner API, die von den Google Play-Diensten bereitgestellt wird. Damit können Sie Barcodes decodieren, ohne Kameraberechtigungen 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 Anwendungsfall zum Scannen von Barcodes 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
Android bietet mehrere Möglichkeiten, nicht verwendete Laufzeitberechtigungen auf den Standardstatus „Abgelehnt“ zurückzusetzen.
Designrichtlinien lesen
Laufzeitberechtigungen anfordern
Wenn Sie festgestellt haben, dass Ihre App Laufzeitberechtigungen deklarieren und anfordern muss, folgen Sie einem bestimmten Workflow.
Designrichtlinien lesen
Erklären, warum Ihre App Berechtigungen benötigt
Mit requestPermissions() wird ein Dialogfeld angezeigt, in dem angegeben wird, welche Berechtigungen Ihre App verwenden möchte. Es wird jedoch nicht erklärt, warum, was für den Nutzer verwirrend sein kann.
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 die Auswirkungen der Ablehnung einer Berechtigung vor und nach der Entscheidung erläutern.
Designrichtlinien lesen