Es gibt mehrere Möglichkeiten, Standortinformationen von Nutzern unter Android anzufordern. Die beste Methode hängt vom Anwendungsfall ab. In diesem Leitfaden werden verschiedene Szenarien für den Standortzugriff beschrieben und es wird erläutert, wie Sie in jedem Fall Berechtigungen zur Standortermittlung anfordern.
Sehen Sie sich zuerst die Best Practices für alle Laufzeitberechtigungen sowie die allgemeinen Hinweise zur Minimierung von Berechtigungsanfragen an.
Arten des Standortzugriffs
Jede Berechtigung hat eine Kombination der folgenden Merkmale:
- Kategorie: Entweder Standortermittlung im Vordergrund oder Standortermittlung im Hintergrund.
- Genauigkeit: Entweder genauer Standort oder ungefährer Standort.
Standortermittlung im Vordergrund
Wenn Ihre App eine Funktion enthält, die Standortinformationen nur einmal oder für einen bestimmten Zeitraum teilt oder empfängt, ist für diese Funktion der Zugriff auf den Standort im Vordergrund erforderlich. Einige Beispiele:
- In einer Navigations-App können Nutzer über eine Funktion eine detaillierte Routenführung erhalten.
- In einer Messaging-App können Nutzer ihren aktuellen Standort mit anderen Nutzern teilen.
Das System geht davon aus, dass Ihre App den Standort im Vordergrund verwendet, wenn eine Funktion Ihrer App in einer der folgenden Situationen auf den aktuellen Standort des Geräts zugreift:
- Eine Aktivität, die zu Ihrer App gehört, ist sichtbar.
In Ihrer App wird ein Dienst im Vordergrund ausgeführt. Wenn ein Dienst im Vordergrund ausgeführt wird, wird der Nutzer durch eine dauerhafte Benachrichtigung darauf aufmerksam gemacht. Ihre App behält den Zugriff, wenn sie im Hintergrund ausgeführt wird, z. B. wenn der Nutzer auf seinem Gerät die Startbildschirmtaste drückt oder das Display des Geräts ausschaltet.
Außerdem sollten Sie den Typ des Dienstes im Vordergrund als
locationdeklarieren, wie im folgenden Code-Snippet gezeigt. Unter Android 10 (API-Level 29) und höher müssen Sie diesen Typ von Dienst im Vordergrund deklarieren.<!-- Recommended for Android 9 (API level 28) and lower. --> <!-- Required for Android 10 (API level 29) and higher. --> <service android:name="MyNavigationService" android:foregroundServiceType="location" ... > <!-- Any inner elements would go here. --> </service>
Sie deklarieren einen Bedarf für die Standortermittlung im Vordergrund, wenn Ihre App entweder die Berechtigung ACCESS_COARSE_LOCATION oder die Berechtigung ACCESS_FINE_LOCATION anfordert, wie im folgenden Snippet gezeigt:
<manifest ... >
<!-- Always include this permission -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- Include only if your app benefits from precise location access. -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>
Einmaliger Zugriff: Neben dem Zugriff auf Standortdaten im Vordergrund gibt es bei einigen Anwendungsfällen die Besonderheit, dass der Zugriff auf den Nutzerstandort nur an bestimmten Stellen in der App erforderlich ist, anstatt ihn während der gesamten App-Nutzung ständig zu aktualisieren. In diesen Fällen sollten Apps den Button „Standort“ verwenden, um den Standortzugriff für die jeweilige Sitzung der App-Nutzung anzufordern. Wenn Ihre App auf Android 17 (API-Level 37) oder höher ausgerichtet ist und nur Funktionen enthält, die einen sitzungsbasierten Zugriff auf die Standortermittlung erfordern, müssen Sie gemäß der Google Play-Richtlinie den Button „Standort“ verwenden. Weitere Informationen finden Sie in der Richtlinie für den Button „Standort“.
Standortermittlung im Hintergrund
Eine App benötigt Zugriff auf die Standortermittlung im Hintergrund, wenn eine Funktion in der App den Standort ständig mit anderen Nutzern teilt oder die Geofencing API verwendet. Hier einige Beispiele:
- In einer App zur Standortfreigabe für Familien können Nutzer ihren Standort kontinuierlich mit Familienmitgliedern teilen.
- In einer IoT-App können Nutzer ihre Smart-Home-Geräte so konfigurieren, dass sie sich ausschalten, wenn der Nutzer das Zuhause verlässt, und wieder einschalten, wenn er zurückkehrt.
Das System geht davon aus, dass Ihre App die Standortermittlung im Hintergrund verwendet, wenn sie in einer anderen als den im Abschnitt Standortermittlung im Vordergrund beschriebenen Situationen auf den aktuellen Standort des Geräts zugreift. Die Genauigkeit der Standortermittlung im Hintergrund entspricht der Genauigkeit der Standortermittlung im Vordergrund, die von den Berechtigungen zur Standortermittlung abhängt, die Ihre App deklariert.
Unter Android 10 (API-Level 29) und höher müssen Sie die Berechtigung ACCESS_BACKGROUND_LOCATION im Manifest Ihrer App deklarieren, um zur Laufzeit Zugriff auf die Standortermittlung im Hintergrund anzufordern. In früheren Android-Versionen erhält Ihre App, wenn sie Zugriff auf die Standortermittlung im Vordergrund erhält, automatisch auch Zugriff auf die Standortermittlung im Hintergrund.
<manifest ... >
<!-- Required only when requesting background location access on
Android 10 (API level 29) and higher. -->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
</manifest>
Genauigkeit
Android unterstützt die folgenden Stufen der Standortgenauigkeit:
- Annähernd
- Liefert eine Schätzung des Gerätestandorts. Wenn diese Standortschätzung von der
LocationManagerServiceoder derFusedLocationProviderstammt, ist sie auf etwa 3 Quadratkilometer genau. Deine App kann Standorte mit dieser Genauigkeit empfangen, wenn du die BerechtigungACCESS_COARSE_LOCATION, aber nicht die BerechtigungACCESS_FINE_LOCATIONdeklarierst. - Präzise
- Liefert eine möglichst genaue Schätzung des Gerätestandorts.
Wenn die Standortschätzung von
LocationManagerServiceoderFusedLocationProviderstammt, liegt sie normalerweise innerhalb von etwa 50 Metern und ist manchmal sogar auf wenige Meter genau. Ihre App kann Standorte mit dieser Genauigkeit empfangen, wenn Sie die BerechtigungACCESS_FINE_LOCATIONdeklarieren.
Wenn der Nutzer die Berechtigung zur Ermittlung des ungefähren Standorts gewährt, hat Ihre App nur Zugriff auf den ungefähren Standort, unabhängig davon, welche Berechtigungen zur Standortermittlung Ihre App deklariert.
Ihre App sollte auch dann funktionieren, wenn der Nutzer nur Zugriff auf den ungefähren Standort gewährt. Wenn eine Funktion in Ihrer App unbedingt Zugriff auf den genauen Standort über die Berechtigung ACCESS_FINE_LOCATION benötigt, können Sie den Nutzer bitten, Ihrer App Zugriff auf den genauen Standort zu gewähren.
Erinnerung an die Gewährung der Standortermittlung im Hintergrund
Wenn eine Funktion in Ihrer App unter Android 10 (API-Level 29) und höher zum ersten Mal auf den Gerätestandort im Hintergrund zugreift, nachdem der Nutzer den Zugriff auf die Standortermittlung im Hintergrund gewährt hat, plant das System eine Benachrichtigung, die an den Nutzer gesendet wird. Diese Benachrichtigung erinnert den Nutzer daran, dass er deiner App erlaubt hat, jederzeit auf den Gerätestandort zuzugreifen. In Abbildung 8 ist eine Beispielbenachrichtigung zu sehen.
Standortanforderungen in den SDK-Abhängigkeiten Ihrer App prüfen
Prüfen Sie, ob Ihre App SDKs verwendet, die Berechtigungen zur Standortermittlung erfordern, insbesondere die Berechtigung ACCESS_FINE_LOCATION. Weitere Informationen finden Sie im Blogpost Getting to know the behaviors of your SDK dependencies auf Medium.
Zusätzliche Ressourcen
Weitere Informationen zu Berechtigungen zur Standortermittlung in Android finden Sie in den folgenden Materialien:
Codelabs
Videos
Beispiele
- Beispiel-App, um die Verwendung von Berechtigungen zur Standortermittlung zu demonstrieren.