后台位置信息使用情况

Android 14 (Android U) 引入了新的限制,以限制在后台获取用户位置信息的应用。为帮助减少这些变化,我们在 5.3.2 版中更新了 Navigation SDK,以更好地管理后台位置信息访问权限。此外,我们还建议您更新实现,以确保您的应用可以继续访问最精确的位置数据。

Android 14 中的变更对 Navigation SDK 的影响

当您在应用中调用 startGuidance() 时,前台服务会开始显示精细导航的用户通知。精细导航依赖于能否访问用户的位置信息,以便更新路线并显示正确的视听导航。从 Android 14 开始,在后台访问用户的确切位置信息需要获得用户的许可。默认情况下,如果应用未获得用户授予后台位置信息访问权限的权限,并尝试启动前台服务来获取位置信息,系统会抛出 SecurityException,导致应用崩溃。

Navigation SDK 如何缓解此问题

从版本 5.3.2 开始,Navigation SDK 会处理此 SecurityException 而不影响应用,允许导航继续在后台运行。此外,Navigation SDK 的 AndroidManifest 中包含 ACCESS_BACKGROUND_LOCATION 权限。这样一来,您的应用就不需要自行声明权限,因为 Gradle 合并功能会处理该权限。不过,如果在应用进入后台之前未向用户显示通知,Navigation SDK 将依赖系统来提供位置信息更新。这些系统更新可能不会频繁或不精确,并会导致导航体验不佳。因此,我们建议您也提示用户请求在后台访问位置信息。

应用开发者可采取哪些措施来提高导航时的位置信息精确度

您可以通过更新应用来提示用户在后台访问位置信息,从而提高 Navigation SDK 使用的位置信息信号的准确性。该提示应向用户说明,当应用在后台运行时,授予权限将如何提高位置信息精确度并改善导航体验。

权限对话框示例

如需详细了解如何提示用户授予位置信息访问权限,请参阅请求位置信息权限 | 传感器和位置信息 | Android 开发者