Standortaktualisierungen in Android mit Kotlin erhalten

1. Hinweis

Mit Android 10 und 11 haben Nutzer mehr Kontrolle über die Zugriff auf die Gerätestandorte haben.

Wenn eine App unter Android 11 den Standortzugriff anfordert, haben Nutzer vier Möglichkeiten:

  • Immer zulassen
  • Zugriff nur während der Nutzung der App zulassen (in Android 10)
  • Einmalig (in Android 11)
  • Ablehnen

Android 10

6a1029175b467c77.png

Android 11

73d8cc88c5877c25.png

In diesem Codelab erfährst du, wie du Standortupdates erhältst und die Standortermittlung unter allen Android-Versionen, insbesondere von Android 10 und 11, unterstützt. Am Ende des Codelabs können Sie davon ausgehen, dass Sie eine App haben, die den aktuellen Best Practices zum Abrufen von Standortaktualisierungen entspricht.

Voraussetzungen

Aufgabe

  • Beachte die Best Practices für die Standortermittlung in Android.
  • Berechtigungen zur Standortermittlung im Vordergrund verwalten (wenn ein Nutzer anfordert, dass Ihre App während der Nutzung der App auf den Gerätestandort zugreift).
  • Du kannst eine vorhandene App so ändern, dass sie die Anforderung des Standortzugriffs unterstützt, indem du Code zum Abonnieren und Kündigen eines Standorts hinzufügst.
  • Du kannst die App für Android 10 und 11 noch unterstützen, indem du eine Logik für den Zugriff auf die Standortermittlung im Vordergrund oder während der Verwendung hinzufügst.

Voraussetzungen

  • Android Studio 3.4 oder höher zum Ausführen des Codes
  • Ein Gerät/Emulator mit einer Entwicklervorschau von Android 10 und 11

2. Erste Schritte

Startprojekt-Repository klonen

Für einen möglichst schnellen Einstieg können Sie auf diesem Einstiegsprojekt aufbauen. Wenn Sie Git installiert haben, können Sie einfach den folgenden Befehl ausführen:

 git clone https://github.com/android/codelab-while-in-use-location

Sie können die GitHub-Seite direkt aufrufen.

Wenn Sie Git nicht haben, können Sie das Projekt als ZIP-Datei abrufen:

Projekt importieren

Öffnen Sie Android Studio und wählen Sie Open an bestehendes Android Studio project (Vorhandenes Android Studio-Projekt öffnen) aus. aus und öffnen Sie das Projektverzeichnis.

Nachdem das Projekt geladen wurde, wird möglicherweise auch eine Benachrichtigung angezeigt, dass Git nicht alle lokalen Änderungen verfolgt. Sie können auch auf Ignorieren klicken. (Sie übertragen keine Änderungen zurück in das Git-Repository.)

Wenn Sie sich in der Android-Ansicht befinden, sollte links oben im Projektfenster in etwa die Abbildung unten zu sehen sein. Wenn Sie sich in der Ansicht Projekt befinden, müssen Sie das Projekt erweitern, damit Sie die gleichen Ergebnisse sehen.

fa825dae96c5dc18.png

Es gibt zwei Ordner: base und complete. Jedes wird als „Modul“ bezeichnet.

Es kann einige Sekunden dauern, bis Android Studio das Projekt zum ersten Mal im Hintergrund kompiliert. Während dieses Zeitraums wird in der Statusleiste am unteren Rand von Android Studio die folgende Meldung angezeigt:

c2273e7835c0841a.png

Warten Sie, bis Android Studio die Indexierung und Erstellung des Projekts abgeschlossen hat, bevor Sie Änderungen am Code vornehmen. Dadurch kann Android Studio alle erforderlichen Komponenten laden.

Wenn Sie eine Aufforderung wie Aktualisieren, damit die Sprachänderungen wirksam werden? oder Ähnliches sehen, wählen Sie Ja aus.

Einstiegsprojekt verstehen

Jetzt können Sie den Standort in der App anfordern. Das Modul base dient als Ausgangspunkt. Fügen Sie bei jedem Schritt Code in das Modul base ein. Wenn Sie dieses Codelab abgeschlossen haben, sollte der Code im Modul base mit dem Inhalt des Moduls complete übereinstimmen. Das Modul complete kann dazu verwendet werden, Ihre Arbeit zu überprüfen oder als Referenz zu nutzen, falls Probleme auftreten.

Zu den Hauptkomponenten gehören:

  • MainActivity: Benutzeroberfläche, über die der Nutzer der App Zugriff auf den Gerätestandort gewährt
  • LocationService: Dienst, der Standortänderungen abonniert und abbestellt und sich (mit Benachrichtigung) zu einem Dienst im Vordergrund bewirbt, wenn der Nutzer die App-Aktivität verlässt. Hier geben Sie den Standortcode ein.
  • Util: Erweiterungsfunktionen für die Klasse Location werden hinzugefügt und der Ort wird in SharedPreferences (vereinfachte Datenschicht) gespeichert.

Einrichtung des Emulators

Informationen zum Einrichten eines Android-Emulators finden Sie unter Auf einem Emulator ausführen.

Startprojekt ausführen

Führen Sie Ihre App aus.

  1. Verbinde dein Android-Gerät mit deinem Computer oder starte einen Emulator. Achte darauf, dass auf dem Gerät Android 10 oder höher installiert ist.
  2. Wählen Sie in der Symbolleiste im Drop-down-Menü die Konfiguration base aus und klicken Sie auf Ausführen:

99600e9d44527ab.png

  1. Auf deinem Gerät wird die folgende App angezeigt:

99bf1dae46f99af3.png

Möglicherweise werden im Ausgabebildschirm keine Standortinformationen angezeigt. Das liegt daran, dass Sie den Standortcode noch nicht hinzugefügt haben.

3. Standort wird hinzugefügt

Konzepte

In diesem Codelab erfährst du, wie du Standortupdates erhältst und später Android 10 und Android 11 unterstützt.

Bevor Sie jedoch mit dem Programmieren beginnen, ist es sinnvoll, sich mit den Grundlagen vertraut zu machen.

Arten des Standortzugriffs

Vielleicht erinnern Sie sich an die vier verschiedenen Optionen für den Standortzugriff zu Beginn des Codelabs. Sehen wir uns an, was sie bedeuten:

  • Zugriff nur während der Nutzung der App zulassen
  • Diese Option wird für die meisten Apps empfohlen. Auch als „während der Nutzung“ bezeichnet oder "Nur Vordergrund" Zugriff haben, wurde diese Option in Android 10 hinzugefügt. Damit können Entwickler den Standort nur dann abrufen, wenn die App aktiv verwendet wird. Eine Anwendung gilt als aktiv, wenn eine der folgenden Bedingungen zutrifft:
  • Eine Aktivität ist sichtbar.
  • Ein Dienst im Vordergrund wird mit einer laufenden Benachrichtigung ausgeführt.
  • Einmalig
  • Diese Funktion wurde in Android 11 hinzugefügt. Sie entspricht Zugriff nur während der Nutzung der App zulassen, aber für einen begrenzten Zeitraum. Weitere Informationen finden Sie unter Einmalige Berechtigungen.
  • Ablehnen
  • Diese Option verhindert den Zugriff auf Standortinformationen.
  • Immer zulassen
  • Mit dieser Option können Sie jederzeit auf Ihren Standort zugreifen. Für Android 10 und höher ist jedoch eine zusätzliche Berechtigung erforderlich. Außerdem müssen Sie einen gültigen Anwendungsfall haben und die Standortrichtlinien einhalten. Auf diese Option gehen wir in diesem Codelab nicht ein, da es sich um einen seltenen Anwendungsfall handelt. Wenn Sie jedoch einen gültigen Anwendungsfall haben und wissen möchten, wie der ständige Standort korrekt verarbeitet wird, einschließlich des Zugriffs auf die Standortermittlung im Hintergrund, sehen Sie sich das LocationUpdatesBackgroundKotlin-Beispiel an.

Dienste, Dienste im Vordergrund und Bindung

Damit Standortupdates von Zugriff nur während der Nutzung der App zulassen vollständig unterstützt werden, müssen Sie berücksichtigen, wenn der Nutzer Ihre App verlässt. Wenn du in diesem Fall weiterhin Updates erhalten möchtest, musst du ein Service im Vordergrund erstellen und es mit einem Notification verknüpfen.

Wenn du dieselbe Service verwenden möchtest, um Standortaktualisierungen anzufordern, wenn deine App sichtbar ist und der Nutzer deine App verlässt, musst du die Service an das UI-Element binden bzw. die Bindung aufheben.

Da es in diesem Codelab nur darum geht, Standortaktualisierungen zu erhalten, findest du den gesamten Code, den du brauchst, in der ForegroundOnlyLocationService.kt-Klasse. Du kannst diesen Kurs und die MainActivity.kt durchsuchen, um zu sehen, wie sie zusammen funktionieren.

Weitere Informationen finden Sie unter Dienste – Übersicht und Übersicht über gebundene Dienste.

Berechtigungen

Wenn Sie Standortaktualisierungen von einem NETWORK_PROVIDER oder GPS_PROVIDER erhalten möchten, müssen Sie die Berechtigung des Nutzers anfordern, indem Sie in Ihrer Android-Manifestdatei entweder die Berechtigung ACCESS_COARSE_LOCATION oder ACCESS_FINE_LOCATION deklarieren. Ohne diese Berechtigungen kann deine App zur Laufzeit keinen Zugriff auf den Standort anfordern.

Diese Berechtigungen gelten für die Fälle Einmalig und Zugriff nur während der Nutzung der App zulassen, wenn deine App auf einem Gerät mit Android 10 oder höher verwendet wird.

Standort

Deine App kann über Klassen im Paket com.google.android.gms.location auf die unterstützten Standortdienste zugreifen.

Sehen Sie sich die Hauptklassen an:

  • FusedLocationProviderClient
  • Dies ist die zentrale Komponente des Standort-Frameworks. Nach der Erstellung können Sie damit Standortaktualisierungen anfordern und den letzten bekannten Standort abrufen.
  • LocationRequest
  • Dies ist ein Datenobjekt, das Parameter der Dienstqualität für Anfragen enthält (Intervalle für Aktualisierungen, Prioritäten und Genauigkeit). Wird an FusedLocationProviderClient übergeben, wenn du Standortaktualisierungen anforderst.
  • LocationCallback
  • Wird für den Empfang von Benachrichtigungen verwendet, wenn sich der Standort des Geräts geändert hat oder nicht mehr ermittelt werden kann. Diesem wird ein LocationResult übergeben, über das Sie das Location zum Speichern in Ihrer Datenbank abrufen können.

Nachdem Sie nun eine grundlegende Vorstellung davon haben, was Sie tun, können Sie mit dem Code beginnen!

4. Standortfunktionen hinzufügen

In diesem Codelab geht es um die am häufigsten verwendete Standortoption: Zugriff nur während der Nutzung der App zulassen.

Damit Sie Standortaktualisierungen erhalten können, muss Ihre App entweder eine sichtbare Aktivität haben oder einen Dienst im Vordergrund ausführen (mit Benachrichtigung).

Berechtigungen

In diesem Codelab wird gezeigt, wie Sie Standortaktualisierungen erhalten, und nicht, wie Berechtigungen zur Standortermittlung angefordert werden. Der berechtigungsbasierte Code wurde also bereits für Sie geschrieben. Du kannst sie gerne überspringen, wenn du sie bereits verstanden hast.

Im Folgenden sind die Berechtigungen hervorgehoben (für diesen Teil sind keine Maßnahmen erforderlich):

  1. Deklariere in der AndroidManifest.xml, welche Berechtigung du verwendest.
  2. Bevor Sie versuchen, auf Standortinformationen zuzugreifen, prüfen Sie, ob der Nutzer Ihrer App die Berechtigung dazu erteilt hat. Wenn Ihre App noch keine Berechtigung erhalten hat, fordern Sie Zugriff an.
  3. Behandelt die Berechtigungsauswahl des Nutzers. (Sie finden diesen Code im MainActivity.kt.)

Wenn Sie in AndroidManifest.xml oder MainActivity.kt nach TODO: Step 1.0, Review Permissions suchen, wird der gesamte für Berechtigungen geschriebene Code angezeigt.

Weitere Informationen finden Sie unter Berechtigungsübersicht.

Schreiben Sie nun einen Standortcode.

Wichtige Variablen für Standortaktualisierungen prüfen

Suchen Sie im Modul base nach TODO: Step 1.1, Review variables im

Datei ForegroundOnlyLocationService.kt.

In diesem Schritt sind keine Maßnahmen erforderlich. Sehen Sie sich einfach den folgenden Codeblock zusammen mit den Kommentaren an, um die wichtigsten Klassen und Variablen zu verstehen, die Sie zum Empfangen von Standortaktualisierungen verwenden.

// TODO: Step 1.1, Review variables (no changes).
// FusedLocationProviderClient - Main class for receiving location updates.
private lateinit var fusedLocationProviderClient: FusedLocationProviderClient

// LocationRequest - Requirements for the location updates, i.e., how often you
// should receive updates, the priority, etc.
private lateinit var locationRequest: LocationRequest

// LocationCallback - Called when FusedLocationProviderClient has a new Location.
private lateinit var locationCallback: LocationCallback

// Used only for local storage of the last known location. Usually, this would be saved to your
// database, but because this is a simplified sample without a full database, we only need the
// last location to create a Notification if the user navigates away from the app.
private var currentLocation: Location? = null

Überprüfen Sie die Initialisierung von FusedLocationProviderClient.

Suchen Sie im Modul base in der Datei ForegroundOnlyLocationService.kt nach TODO: Step 1.2, Review the FusedLocationProviderClient. Ihr Code sollte in etwa so aussehen:

// TODO: Step 1.2, Review the FusedLocationProviderClient.
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this)

Wie in den vorherigen Kommentaren erwähnt, ist dies der Hauptkurs für Updates zum Standort. Die Variable ist bereits für Sie initialisiert, es ist jedoch wichtig, dass Sie den Code überprüfen, um zu verstehen, wie sie initialisiert wurde. Du fügst hier später Code ein, um Standortaktualisierungen anzufordern.

LocationRequest initialisieren

  1. Suchen Sie im Modul base in der Datei ForegroundOnlyLocationService.kt nach TODO: Step 1.3, Create a LocationRequest.
  2. Fügen Sie nach dem Kommentar den folgenden Code ein.

Mit dem Initialisierungscode LocationRequest werden die zusätzlichen Dienstqualitätsparameter hinzugefügt, die Sie für Ihre Anfrage benötigen (Intervalle, maximale Wartezeit und Priorität).

// TODO: Step 1.3, Create a LocationRequest.
locationRequest = LocationRequest.create().apply {
   // Sets the desired interval for active location updates. This interval is inexact. You
   // may not receive updates at all if no location sources are available, or you may
   // receive them less frequently than requested. You may also receive updates more
   // frequently than requested if other applications are requesting location at a more
   // frequent interval.
   //
   // IMPORTANT NOTE: Apps running on Android 8.0 and higher devices (regardless of
   // targetSdkVersion) may receive updates less frequently than this interval when the app
   // is no longer in the foreground.
   interval = TimeUnit.SECONDS.toMillis(60)

   // Sets the fastest rate for active location updates. This interval is exact, and your
   // application will never receive updates more frequently than this value.
   fastestInterval = TimeUnit.SECONDS.toMillis(30)

   // Sets the maximum time when batched location updates are delivered. Updates may be
   // delivered sooner than this interval.
   maxWaitTime = TimeUnit.MINUTES.toMillis(2)

   priority = LocationRequest.PRIORITY_HIGH_ACCURACY
}
  1. Lies dir die Kommentare durch, um zu verstehen, wie die einzelnen Optionen funktionieren.

LocationCallback initialisieren

  1. Suchen Sie im Modul base in der Datei ForegroundOnlyLocationService.kt nach TODO: Step 1.4, Initialize the LocationCallback.
  2. Fügen Sie nach dem Kommentar den folgenden Code ein.
// TODO: Step 1.4, Initialize the LocationCallback.
locationCallback = object : LocationCallback() {
    override fun onLocationResult(locationResult: LocationResult) {
        super.onLocationResult(locationResult)

        // Normally, you want to save a new location to a database. We are simplifying
        // things a bit and just saving it as a local variable, as we only need it again
        // if a Notification is created (when the user navigates away from app).
        currentLocation = locationResult.lastLocation

        // Notify our Activity that a new location was added. Again, if this was a
        // production app, the Activity would be listening for changes to a database
        // with new locations, but we are simplifying things a bit to focus on just
        // learning the location side of things.
        val intent = Intent(ACTION_FOREGROUND_ONLY_LOCATION_BROADCAST)
        intent.putExtra(EXTRA_LOCATION, currentLocation)
        LocalBroadcastManager.getInstance(applicationContext).sendBroadcast(intent)

        // Updates notification content if this service is running as a foreground
        // service.
        if (serviceRunningInForeground) {
            notificationManager.notify(
                NOTIFICATION_ID,
                generateNotification(currentLocation))
        }
    }
}

Die LocationCallback, die du hier erstellst, ist der Callback, den FusedLocationProviderClient aufruft, wenn ein neues Standortupdate verfügbar ist.

In deinem Callback rufst du zuerst den neuesten Standort über ein LocationResult-Objekt ab. Danach benachrichtigen Sie Ihr Activity über eine lokale Übertragung (sofern aktiv) über den neuen Standort oder Sie aktualisieren die Notification, wenn dieser Dienst als Service im Vordergrund ausgeführt wird.

  1. Lies dir die Kommentare durch, um zu verstehen, was die einzelnen Teile bewirken.

Standortänderungen abonnieren

Nachdem du alles initialisiert hast, musst du dem FusedLocationProviderClient mitteilen, dass du Updates erhalten möchtest.

  1. Suchen Sie im Modul base in der Datei ForegroundOnlyLocationService.kt nach Step 1.5, Subscribe to location changes.
  2. Fügen Sie nach dem Kommentar den folgenden Code ein.
// TODO: Step 1.5, Subscribe to location changes.
fusedLocationProviderClient.requestLocationUpdates(locationRequest, locationCallback, Looper.getMainLooper())

Durch den requestLocationUpdates()-Aufruf wird FusedLocationProviderClient mitgeteilt, dass du Standortaktualisierungen erhalten möchtest.

Sie kennen wahrscheinlich die LocationRequest und die LocationCallback, die Sie zuvor definiert haben. Diese teilen dem FusedLocationProviderClient die Parameter der Dienstqualität für Ihre Anfrage mit und geben an, was bei einem Update aufgerufen werden soll. Schließlich gibt das Objekt Looper den Thread für den Callback an.

Sie sehen auch, dass sich dieser Code in einer try/catch-Anweisung befindet. Diese Methode erfordert eine solche Blockierung, da ein SecurityException auftritt, wenn Ihre App nicht berechtigt ist, auf Standortinformationen zuzugreifen.

Keine Standortänderungen mehr erhalten

Wenn die App keinen Zugriff mehr auf Standortinformationen benötigt, ist es wichtig, dass Sie Standortaktualisierungen abbestellen.

  1. Suchen Sie im Modul base in der Datei ForegroundOnlyLocationService.kt nach TODO: Step 1.6, Unsubscribe to location changes.
  2. Fügen Sie nach dem Kommentar den folgenden Code ein.
// TODO: Step 1.6, Unsubscribe to location changes.
val removeTask = fusedLocationProviderClient.removeLocationUpdates(locationCallback)
removeTask.addOnCompleteListener { task ->
   if (task.isSuccessful) {
       Log.d(TAG, "Location Callback removed.")
       stopSelf()
   } else {
       Log.d(TAG, "Failed to remove Location Callback.")
   }
}

Mit der Methode removeLocationUpdates() wird eine Aufgabe eingerichtet, die FusedLocationProviderClient darüber informiert, dass Sie keine Standortaktualisierungen für Ihr LocationCallback mehr erhalten möchten. addOnCompleteListener() gibt den Callback zur Vervollständigung zurück und führt den Task aus.

Wie im vorherigen Schritt haben Sie möglicherweise festgestellt, dass sich dieser Code in einer try/catch-Anweisung befindet. Für diese Methode ist eine solche Blockierung erforderlich, da ein SecurityException auftritt, wenn deine App nicht berechtigt ist, auf Standortinformationen zuzugreifen

Sie fragen sich vielleicht, wann die Methoden aufgerufen werden, die den Code zum Abonnieren/Abbestellen enthalten. Sie werden in der Hauptklasse ausgelöst, wenn die Nutzenden auf die Schaltfläche tippen. Wenn du sie dir ansehen möchtest, sieh dir die MainActivity.kt-Klasse an.

App ausführen

Starte deine App über Android Studio und probiere die Standort-Schaltfläche aus.

Im Ausgabebildschirm sollten nun die Standortinformationen angezeigt werden. Dies ist eine voll funktionsfähige App für Android 9.

2ae45c4e297e3681.png

d66089bfb532e993.png

5. Android 10 unterstützen

In diesem Abschnitt fügen Sie Unterstützung für Android 10 hinzu.

Ihre App abonniert bereits Standortänderungen, sodass Sie nicht viel Arbeit erledigen müssen.

Sie müssen lediglich angeben, dass Ihr Dienst im Vordergrund zur Standortermittlung verwendet wird.

Target SDK 29

  1. Suchen Sie im Modul base in der Datei build.gradle nach TODO: Step 2.1, Target Android 10 and then Android 11..
  2. Nehmen Sie folgende Änderungen vor:
  3. Setzen Sie targetSdkVersion auf 29.

Ihr Code sollte in etwa so aussehen:

android {
   // TODO: Step 2.1, Target Android 10 and then Android 11.
   compileSdkVersion 29
   defaultConfig {
       applicationId "com.example.android.whileinuselocation"
       minSdkVersion 26
       targetSdkVersion 29
       versionCode 1
       versionName "1.0"
   }
...
}

Anschließend werden Sie aufgefordert, Ihr Projekt zu synchronisieren. Klicken Sie auf Jetzt synchronisieren.

153f70847e0ec320.png

Danach ist deine App fast für Android 10 bereit.

Typ des Diensts im Vordergrund hinzufügen

In Android 10 müssen Sie den Typ Ihres Diensts im Vordergrund angeben, wenn Sie während der Nutzung Standortzugriff benötigen. In Ihrem Fall werden sie verwendet, um Standortinformationen abzurufen.

Suchen Sie im Modul base nach TODO: 2.2, Add foreground service type in AndroidManifest.xml und fügen Sie den folgenden Code in das Element <service> ein:

android:foregroundServiceType="location"

Ihr Code sollte in etwa so aussehen:

<application>
   ...

   <!-- Foreground services in Android 10+ require type. -->
   <!-- TODO: 2.2, Add foreground service type. -->
   <service
       android:name="com.example.android.whileinuselocation.ForegroundOnlyLocationService"
       android:enabled="true"
       android:exported="false"
       android:foregroundServiceType="location" />
</application>

Fertig! Deine App unterstützt Android 10 für die Standortermittlung „während der Nutzung“ indem du die Best Practices für die Standortermittlung in Android anwendest.

App ausführen

Starte deine App über Android Studio und probiere die Standort-Schaltfläche aus.

Alles sollte wieder wie vorher funktionieren, aber jetzt funktioniert es auch unter Android 10. Wenn Sie die Berechtigungen für Standorte zuvor nicht akzeptiert haben, sollte jetzt der Berechtigungsbildschirm angezeigt werden.

6a1029175b467c77.png

c7c1d226e49a121.png

39a262b66a275f66.png

6. Android 11 unterstützen

In diesem Abschnitt ist Ihre App auf Android 11 ausgerichtet.

Gute Neuigkeiten! Sie müssen nur an der Datei build.gradle Änderungen vornehmen.

Target SDK 11

  1. Suchen Sie im Modul base in der Datei build.gradle nach TODO: Step 2.1, Target SDK.
  2. Nehmen Sie folgende Änderungen vor:
  3. compileSdkVersion nach 30
  4. targetSdkVersion nach 30

Ihr Code sollte in etwa so aussehen:

android {
   TODO: Step 2.1, Target Android 10 and then Android 11.
   compileSdkVersion 30
   defaultConfig {
       applicationId "com.example.android.whileinuselocation"
       minSdkVersion 26
       targetSdkVersion 30
       versionCode 1
       versionName "1.0"
   }
...
}

Anschließend werden Sie aufgefordert, Ihr Projekt zu synchronisieren. Klicken Sie auf Jetzt synchronisieren.

153f70847e0ec320.png

Danach ist deine App für Android 11 bereit.

App ausführen

Führen Sie Ihre App über Android Studio aus und klicken Sie auf die Schaltfläche.

Alles sollte wieder wie vorher funktionieren, aber jetzt funktioniert es auch unter Android 11. Wenn Sie die Berechtigungen für Standorte zuvor nicht akzeptiert haben, sollte jetzt der Berechtigungsbildschirm angezeigt werden.

73d8cc88c5877c25.png

cc98fac6e089bc4.png

7. Standortstrategien für Android

Wenn du die Berechtigung zur Standortermittlung wie in diesem Codelab beschrieben prüfst und anforderst, kann deine App erfolgreich die Zugriffsebene in Bezug auf den Gerätestandort verfolgen.

Auf dieser Seite finden Sie einige wichtige Best Practices im Zusammenhang mit Berechtigungen zur Standortermittlung. Weitere Informationen dazu, wie Sie die Best Practices für App-Berechtigungen.

Nur nach den Berechtigungen fragen, die Sie benötigen

Fragen Sie nur bei Bedarf nach Berechtigungen. Beispiel:

  • Fordern Sie beim Start der App nur dann eine Berechtigung zur Standortermittlung an, wenn dies unbedingt erforderlich ist.
  • Wenn deine App auf Android 10 oder höher ausgerichtet ist und du einen Dienst im Vordergrund hast, deklariere im Manifest für foregroundServiceType den Wert "location".
  • Fordern Sie nur dann Berechtigungen zur Standortermittlung im Hintergrund an, wenn Sie einen gültigen Anwendungsfall haben, wie unter Sicherer und transparenterer Zugriff auf den Nutzerstandort beschrieben.

Graceful Degradation unterstützen, wenn die Berechtigung nicht gewährt wird

Um eine gute Nutzererfahrung zu gewährleisten, konzipieren Sie Ihre App so, dass sie die folgenden Situationen problemlos bewältigen kann:

  • Ihre App hat keinen Zugriff auf Standortinformationen.
  • Ihre App hat keinen Zugriff auf Standortinformationen, wenn sie im Hintergrund ausgeführt wird.

8. Glückwunsch

Sie haben gelernt, wie Sie in Android Standortupdates erhalten und dabei Best Practices beachtet haben.

Weitere Informationen