Berechtigung zur Standortermittlung anfordern

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:

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 location deklarieren, 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 LocationManagerService oder der FusedLocationProvider stammt, ist sie auf etwa 3 Quadratkilometer genau. Deine App kann Standorte mit dieser Genauigkeit empfangen, wenn du die Berechtigung ACCESS_COARSE_LOCATION, aber nicht die Berechtigung ACCESS_FINE_LOCATION deklarierst.
Präzise
Liefert eine möglichst genaue Schätzung des Gerätestandorts. Wenn die Standortschätzung von LocationManagerService oder FusedLocationProvider stammt, 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 Berechtigung ACCESS_FINE_LOCATION deklarieren.

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.