Berechtigung zur Standortermittlung anfordern

Es gibt mehrere Möglichkeiten, Standortinformationen von Nutzern unter Android anzufordern. Welche die beste ist, hängt vom jeweiligen Anwendungsfall ab. In diesem Leitfaden werden verschiedene Szenarien für den Standortzugriff beschrieben und es wird erläutert, wie Sie in den einzelnen Fällen Standortberechtigungen anfordern.

Sehen Sie sich zuerst die Best Practices für alle Laufzeitberechtigungen sowie die allgemeinen Richtlinien zum Minimieren von Berechtigungsanfragen an.

Arten des Standortzugriffs

Jede Berechtigung hat eine Kombination der folgenden Merkmale:

Vordergrundort

Wenn Ihre App eine Funktion enthält, die Standortinformationen nur einmal oder für einen bestimmten Zeitraum weitergibt 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 mit einer Funktion eine detaillierte Routenführung abrufen.
  • In einer Messaging-App können Nutzer mit einer Funktion ihren aktuellen Standort mit einem anderen Nutzer 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, zeigt das System eine dauerhafte Benachrichtigung an, um den Nutzer darauf aufmerksam zu machen. Ihre App behält den Zugriff bei, wenn sie in den Hintergrund verschoben wird, z. B. wenn der Nutzer auf seinem Gerät die Home-Taste drückt oder das Display seines Geräts ausschaltet.

    Außerdem sollten Sie einen Typ von 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 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 die Notwendigkeit der 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 ist bei einigen Anwendungsfällen zusätzlich erforderlich, dass der Nutzerstandort nur an bestimmten Stellen in der App abgerufen wird und nicht während der gesamten App-Nutzung. In diesen Fällen sollten Apps den Standort-Button 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äß der Google Play-Richtlinie den Button „Standort“ verwenden. Weitere Informationen finden Sie in den Richtlinien für den Button „Standort“.

Standortermittlung im Hintergrund

Für eine App ist die Standortermittlung im Hintergrund erforderlich, 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 den Standort im Hintergrund verwendet, wenn sie in einer anderen Situation als den im Abschnitt Standort im Vordergrund beschriebenen auf den aktuellen Standort des Geräts zugreift. Die Genauigkeit des Hintergrundstandorts ist dieselbe wie die Genauigkeit des Vordergrundstandorts. Sie hängt von den von Ihrer App deklarierten Standortberechtigungen ab.

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 den Standort im Hintergrund anzufordern. 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 von der LocationManagerService oder FusedLocationProvider stammt, ist sie auf etwa 3 Quadratkilometer (ca.1,2 Quadratmeilen) genau. Ihre App kann Standorte mit dieser Genauigkeit empfangen, 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 von LocationManagerService oder FusedLocationProvider stammt, liegt sie in der Regel innerhalb von etwa 50 Metern und manchmal sogar innerhalb weniger Meter. 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 erteilt, hat Ihre App nur Zugriff auf den ungefähren Standort, unabhängig davon, welche Berechtigungen zur Standortermittlung in Ihrer App deklariert sind.

Ihre App sollte auch dann funktionieren, wenn der Nutzer nur den ungefähren Standortzugriff gewährt. Wenn für eine Funktion in Ihrer App unbedingt der Zugriff auf den genauen Standort über die Berechtigung ACCESS_FINE_LOCATION erforderlich ist, können Sie den Nutzer bitten, Ihrer App den Zugriff auf den genauen Standort zu erlauben.

Erinnerung an die Gewährung der Berechtigung zur Standortermittlung im Hintergrund

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

Prüfen Sie die SDK-Abhängigkeiten Ihrer App auf Standortanforderungen.

Prüfen Sie, ob Ihre App SDKs verwendet, die von Berechtigungen zur Standortermittlung abhängen, insbesondere von der Berechtigung ACCESS_FINE_LOCATION. Weitere Informationen finden Sie im 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 Berechtigungen zur Standortermittlung.