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
Android 11
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
- Vorkenntnisse in der Android-Entwicklung
- Vorkenntnisse zu Aktivitäten, Diensten und Berechtigungen
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.
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:
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ährtLocationService
: 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 KlasseLocation
werden hinzugefügt und der Ort wird inSharedPreferences
(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.
- 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.
- Wählen Sie in der Symbolleiste im Drop-down-Menü die Konfiguration
base
aus und klicken Sie auf Ausführen:
- Auf deinem Gerät wird die folgende App angezeigt:
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 dasLocation
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):
- Deklariere in der
AndroidManifest.xml
, welche Berechtigung du verwendest. - 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.
- 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
- Suchen Sie im Modul
base
in der DateiForegroundOnlyLocationService.kt
nachTODO: Step 1.3, Create a LocationRequest
. - 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
}
- Lies dir die Kommentare durch, um zu verstehen, wie die einzelnen Optionen funktionieren.
LocationCallback initialisieren
- Suchen Sie im Modul
base
in der DateiForegroundOnlyLocationService.kt
nachTODO: Step 1.4, Initialize the LocationCallback
. - 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.
- 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.
- Suchen Sie im Modul
base
in der DateiForegroundOnlyLocationService.kt
nachStep 1.5, Subscribe to location changes
. - 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.
- Suchen Sie im Modul
base
in der DateiForegroundOnlyLocationService.kt
nachTODO: Step 1.6, Unsubscribe to location changes
. - 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.
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
- Suchen Sie im Modul
base
in der Dateibuild.gradle
nachTODO: Step 2.1, Target Android 10 and then Android 11.
. - Nehmen Sie folgende Änderungen vor:
- Setzen Sie
targetSdkVersion
auf29
.
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.
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.
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
- Suchen Sie im Modul
base
in der Dateibuild.gradle
nachTODO: Step 2.1, Target SDK
. - Nehmen Sie folgende Änderungen vor:
compileSdkVersion
nach30
targetSdkVersion
nach30
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.
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.
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
- Vollständiges Beispiel zur Verwendung der Standortermittlung im Hintergrund bei einem gültigen Anwendungsfall
- Standortaktualisierungen anfragen