Berechtigung zur Standortermittlung anfordern

Aus Datenschutzgründen müssen Apps, die Standortdienste verwenden, Standortberechtigungen anfordern.

Es gibt mehrere Berechtigungen, die sich auf den Standort beziehen. Welche Berechtigungen Sie anfordern und wie Sie sie anfordern, hängt von den Standortanforderungen für den Anwendungsfall Ihrer App ab.

Auf dieser Seite werden die verschiedenen Arten von Standortanforderungen beschrieben und es wird erläutert, wie Sie in den einzelnen Fällen Standortberechtigungen anfordern.

Wenn Sie Berechtigungen zur Standortermittlung anfordern möchten, sollten Sie die Best Practices für alle Laufzeitberechtigungen beachten.

Arten des Standortzugriffs

Jede Berechtigung hat eine Kombination der folgenden Merkmale:

Vordergrundposition

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 Wegbeschreibung 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 die Home-Taste auf seinem Gerät 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>

Standortermittlung im Hintergrund

Für eine App ist der Zugriff auf den Standort 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 den Standortzugriff 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>

Accuracy

Android unterstützt die folgenden Genauigkeitsstufen für den Standort:

Ungefähr
Liefert eine Schätzung des Gerätestandorts. Wenn diese Standortschätzung von LocationManagerService oder FusedLocationProvider stammt, ist sie auf etwa 3 Quadratkilometer genau. Ihre App kann Standorte mit dieser Genauigkeit empfangen, wenn Sie die Berechtigung ACCESS_COARSE_LOCATION, aber nicht die Berechtigung ACCESS_FINE_LOCATION deklarieren.
Genau
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 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 den Standort 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 Medium-Blogpost Getting to know the behaviors of your SDK dependencies.

Zusätzliche Ressourcen

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

Codelabs

Videos

Produktproben

  • Beispiel-App zur Veranschaulichung der Verwendung von Standortberechtigungen.