Auf dieser Seite werden Best Practices für das Anfordern und Verwalten von Berechtigungen für die Hintergrundstandortnutzung beschrieben.
Berechtigung zur Standortermittlung „Immer zulassen“ anfordern
Ab Android 14 benötigen Apps die Berechtigung ACCESS_BACKGROUND_LOCATION
, um auf den Standort des Nutzers zuzugreifen.
Das Navigation SDK enthält diese Berechtigung in seiner Manifestdatei. Sie müssen sie also nicht explizit anfordern, sofern sie nicht für andere Zwecke benötigt wird. Der Gradle-Manifest-Merger sorgt dafür, dass sie mit dem Manifest der App zusammengeführt wird.
Die Berechtigung ACCESS_BACKGROUND_LOCATION
reicht jedoch nicht aus, um im Hintergrund auf den Standort zuzugreifen. Wir empfehlen, dass Sie von Nutzern die Berechtigung „Immer zulassen“ für den Standort anfordern. So kann die App im Hintergrund ausgeführt werden und Benachrichtigungen anzeigen. Das maximiert die Standortgenauigkeit während der Navigation.
Im Prompt sollte Nutzern erklärt werden, wie die Erteilung der Berechtigung die Genauigkeit der Standortangaben und die Navigation verbessert, wenn die App im Hintergrund ausgeführt wird.
Weitere Informationen zum Auffordern von Nutzern, den Standortzugriff zu gewähren, finden Sie in der Android-Entwicklerdokumentation unter Standortberechtigungen anfordern | Sensoren und Standort | Android-Entwickler.
Sicherstellen, dass Navigationsbenachrichtigungen richtig entfernt werden
Damit Ihre App Benachrichtigungen nicht länger als nötig aktiv hält, sollten Sie die folgenden Bereinigungsschritte ausführen:
- Rufen Sie nach dem Aufrufen von
startGuidance()
entwederstopGuidance()
oderclearDestination()
auf. - Nach der Registrierung von
ArrivalListener
müssen Sie die Registrierung wieder aufheben. - Nach der Registrierung von
RoadSnappedLocationProvider
müssen Sie die Registrierung wieder aufheben.
Wenn Sie diese Schritte ausführen, werden Benachrichtigungen nicht mehr angezeigt, wenn sie nicht mehr benötigt werden. Dadurch können Sie Akkuentladung und mögliche Arbeitsspeicherlecks vermeiden.
Rufen Sie vor dem erneuten Aufrufen von NavigationApi#initForegroundServiceManager-Methoden zuerst NavigationApi#clearForegroundServiceManager auf.
Wenn Ihre App ForegroundServiceManager
verwendet, rufen Sie NavigationApi#clearForegroundServiceManager
vor NavigationApi#initForegroundServiceManagerProvider
auf. Wenn Sie ForegroundServiceManager
bereits initialisiert haben, rufen Sie NavigationApi#initForegroundServiceManagerMessageAndIntent
auf. So können Sie die Benachrichtigungs-ID oder den Benachrichtigungsinhalt aktualisieren, nachdem Sie den Foreground Service Manager initialisiert haben.
Neue Einschränkungen in Android 14
Mit Android 14 (Android U) wurden neue Einschränkungen für Apps eingeführt, die im Hintergrund auf den Standort des Nutzers zugreifen. Um diese Änderungen zu berücksichtigen, wurde das Navigation SDK in Version 5.4.0 aktualisiert, um den Zugriff auf den Standort im Hintergrund besser zu verwalten. Wir empfehlen Ihnen außerdem, Ihre Implementierung zu aktualisieren, damit Ihre App weiterhin Zugriff auf die genauesten Standortdaten hat.
Auswirkungen von Änderungen in Android 14 auf das Navigation SDK
Wenn Sie startGuidance()
in Ihrer App aufrufen, werden im Vordergrunddienst Nutzernachrichten für die Turn-by-Turn-Navigation angezeigt. Die detaillierte Routenführung ist davon abhängig, dass auf den Standort des Nutzers zugegriffen werden kann, um die Route zu aktualisieren und die richtige visuelle und akustische Anleitung zu geben. Ab Android 14 ist für den Zugriff auf den genauen Standort des Nutzers im Hintergrund eine Berechtigung des Nutzers erforderlich. Wenn eine App standardmäßig nicht die Berechtigung des Nutzers für den Zugriff auf den Standort im Hintergrund hat und versucht, einen Dienst im Vordergrund für Standortaktualisierungen zu starten, löst das System eine SecurityException
aus, wodurch die App abstürzt.
So wird dieses Problem durch das Navigation SDK behoben
Ab Version 5.4.0 verarbeitet das Navigation SDK dieses SecurityException
, ohne die App zu beeinträchtigen. Die Navigation kann also im Hintergrund weiterlaufen. Außerdem ist im Navigation SDK die Berechtigung ACCESS_BACKGROUND_LOCATION
in der AndroidManifest
enthalten. So muss Ihre App die Berechtigung nicht selbst deklarieren, da sie durch das Zusammenführen von Gradle behandelt wird. Wenn dem Nutzer jedoch keine Benachrichtigung angezeigt wird, bevor die App in den Hintergrund wechselt, ist das Navigation SDK auf das System angewiesen, um Standortaktualisierungen zu erhalten. Diese Systemupdates sind möglicherweise nicht häufig oder präzise und können zu einer suboptimalen Navigation führen. Daher empfehlen wir, Nutzer auch um Zugriff auf den Standort im Hintergrund zu bitten.
Was App-Entwickler tun können, um die Standortgenauigkeit für die Navigation zu verbessern
Sie können die Genauigkeit des vom Navigation SDK verwendeten Standortsignals verbessern, indem Sie Ihre App so aktualisieren, dass Nutzer um Zugriff auf den Standort im Hintergrund gebeten werden. Weitere Informationen finden Sie unter Berechtigungen zur Standortermittlung „Immer zulassen“ anfordern.