Berechtigungsanfragen minimieren

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.

Wenn Sie eine Berechtigung deklarieren müssen, respektieren Sie immer die Entscheidung des Nutzers und bieten Sie eine Möglichkeit, die App-Nutzung auf eine weniger ressourcenintensive Weise fortzusetzen.

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_LOCATION Berechtigung. 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:

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:

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