Berechtigung zur Standortermittlung anfordern

Es gibt mehrere Möglichkeiten, Standortinformationen von Nutzern auf Android anzufordern. Die beste Methode hängt vom Anwendungsfall ab. In diesem Leitfaden werden verschiedene Szenarien für den Standortzugriff beschrieben und erklärt, wie Sie in den einzelnen Fällen Standortberechtigungen anfordern.

Sehen Sie sich zuerst die Best Practices für alle Laufzeitberechtigungen sowie die allgemeineren Richtlinien zur Minimierung von Berechtigungsanfragen an.

Arten des Standortzugriffs

Jede Berechtigung hat eine Kombination der folgenden Merkmale:

Standort im Vordergrund

Wenn Ihre App eine Funktion enthält, die Standortinformationen nur einmal oder für einen bestimmten Zeitraum freigibt oder empfängt, ist für diese Funktion der Standortzugriff im Vordergrund erforderlich. Einige Beispiele:

  • In einer Navigations-App können Nutzer mit einer Funktion eine detaillierte Routenführung abrufen.
  • In einer Messaging-App können Nutzer mit einer Funktion ihren aktuellen Standort für einen anderen Nutzer freigeben.

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.
  • Ihre App führt einen Dienst im Vordergrund aus. 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 in den Hintergrund verschoben wird, z. B. wenn der Nutzer auf seinem Gerät die Schaltfläche Home drückt oder das Display des Geräts ausschaltet.

    Außerdem sollten Sie einen Dienst im Vordergrund vom Typ location deklarieren, wie im folgenden Code-Snippet gezeigt. Unter Android 10 (API-Level 29) und höher müssen Sie diesen 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, dass Sie den Standort im Vordergrund benötigen, wenn Ihre App entweder die ACCESS_COARSE_LOCATION Berechtigung oder die ACCESS_FINE_LOCATION Berechtigung 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 einige Anwendungsfälle, bei denen der Zugriff auf den Standort des Nutzers nur an bestimmten Punkten der App-Nutzung erforderlich ist, anstatt dass der Standort während der gesamten App-Nutzung aktualisiert wird. In diesen Fällen sollten Apps die Schaltfläche „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 Standortzugriff erfordern, müssen Sie gemäß den Google Play-Richtlinien die Schaltfläche „Standort“ verwenden. Weitere Informationen finden Sie in der Richtlinie zur Schaltfläche „Standort“.

Standortermittlung im Hintergrund

Eine App benötigt die Standortermittlung im Hintergrund, wenn eine Funktion in der App den Standort ständig für andere Nutzer freigibt oder die Geofencing API verwendet. Einige Beispiele:

  • In einer App zur Standortfreigabe für Familienmitglieder können Nutzer mit einer Funktion ihren Standort kontinuierlich für Familienmitglieder freigeben.
  • In einer IoT-App können Nutzer mit einer Funktion ihre Geräte zu Hause so konfigurieren, dass sie ausgeschaltet werden, wenn der Nutzer das Haus verlässt, und wieder eingeschaltet werden, wenn der Nutzer nach Hause zurückkehrt.

Das System geht davon aus, dass Ihre App den Standort im Hintergrund verwendet, wenn sie in einer anderen Situation als den im Abschnitt zum Standort im Vordergrund beschriebenen auf den aktuellen Standort des Geräts zugreift. Die Genauigkeit des Standorts im Hintergrund ist dieselbe wie die Genauigkeit des Standorts im Vordergrund. Sie hängt von den Standort berechtigungen ab, die Ihre App deklariert.

Unter Android 10 (API-Level 29) und höher müssen Sie die ACCESS_BACKGROUND_LOCATION Berechtigung im Manifest Ihrer App deklarieren, um die Standortermittlung im Hintergrund anzufordern zur Laufzeit. In früheren Android-Versionen erhält Ihre App automatisch auch die Standortermittlung im Hintergrund, wenn sie den Standortzugriff im Vordergrund erhält.

<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 Genauigkeitsstufen für den Standort:

Annähernd
Liefert eine Schätzung des Gerätestandorts. Wenn diese Standortschätzung vom LocationManagerService oder FusedLocationProvider stammt, ist diese Schätzung auf etwa 3 Quadratkilometer genau. Ihre App kann Standorte mit dieser Genauigkeit erhalten, wenn Sie die Berechtigung ACCESS_COARSE_LOCATION, aber nicht die Berechtigung ACCESS_FINE_LOCATION deklarieren.
Präzise
Liefert eine möglichst genaue Schätzung des Gerätestandorts. Wenn die Standortschätzung vom LocationManagerService oder FusedLocationProvider stammt, liegt sie in der Regel innerhalb von etwa 50 Metern und ist manchmal sogar auf wenige Meter oder besser genau. Ihre App kann Standorte mit dieser Genauigkeit erhalten, wenn Sie die Berechtigung ACCESS_FINE_LOCATION deklarieren.

Wenn der Nutzer die Berechtigung zur Standortermittlung für den ungefähren Standort erteilt, 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 den Zugriff auf den ungefähren Standort gewährt. Wenn für eine Funktion in Ihrer App unbedingt der Zugriff auf den genauen Standort mit der ACCESS_FINE_LOCATION Berechtigung erforderlich ist, können Sie den Nutzer bitten, IhrerApp den Zugriff auf den genauen Standort zu erlauben.

Erinnerung an die Erteilung der Berechtigung zur Standortermittlung im Hintergrund

Unter Android 10 (API-Level 29) und höher plant das System eine Benachrichtigung für den Nutzer, wenn eine Funktion in Ihrer App zum ersten Mal auf die Standortermittlung im Hintergrund zugreift, nachdem der Nutzer den Zugriff auf die Standortermittlung im Hintergrund gewährt hat. In dieser Benachrichtigung wird der Nutzer daran erinnert, dass er Ihrer App den Zugriff auf den Gerätestandort jederzeit erlaubt hat. Eine Beispielbenachrichtigung ist in Abbildung 8 zu sehen.

Auf Standortanforderungen in den SDK-Abhängigkeiten Ihrer App prüfen

Prüfen Sie, ob Ihre App SDKs verwendet, die von Standortberechtigungen abhängen, insbesondere von der Berechtigung ACCESS_FINE_LOCATION. Weitere Informationen finden Sie im Getting to know the behaviors of your SDK dependencies Blogpost auf Medium.

Zusätzliche Ressourcen

Weitere Informationen zu Standortberechtigungen in Android finden Sie in den folgenden Materialien:

Codelabs

Videos

Beispiele

  • Beispiel-App zur Veranschaulichung der Verwendung von Standortberechtigungen.