本页面讨论以下内容
- 如何请求后台位置信息访问权限。
- 如何根据您应用的目标 SDK 版本处理请求。
- 用户对大致位置信息的偏好设置如何影响应用获取后台位置信息。
权限对话框的内容取决于目标 SDK 版本
当应用中的某项功能在运行 Android 10(API 级别 29)的设备上请求后台位置信息时,系统权限对话框会包含一个名为 始终允许 的选项。如果用户选择此选项,应用中的该功能将获得后台位置信息访问权限。
但是,在 Android 11(API 级别 30)及更高版本上,系统对话框不包含始终允许选项。相反,用户必须在设置页面上启用后台位置信息,如图 7 所示。
您可以通过遵循请求后台位置信息权限的最佳实践,帮助用户导航到此设置页面。授予此权限的过程取决于应用的目标 SDK 版本。
应用的目标平台为 Android 11 或更高版本
如果您的应用尚未获得 ACCESS_BACKGROUND_LOCATION
权限,并且 shouldShowRequestPermissionRationale()
返回 true
,请向用户展示教育性界面,其中包括以下内容
- 清楚说明应用功能为何需要访问后台位置信息。
- 授予后台位置信息的设置选项的用户可见标签(例如,图 7 中的始终允许)。您可以调用
getBackgroundPermissionOptionLabel()
来获取此标签。此方法的返回值会根据用户的设备语言偏好进行本地化。 - 用户拒绝此权限的选项。如果用户拒绝后台位置信息访问,他们应该能够继续使用您的应用。
应用的目标平台为 Android 10 或更低版本
当应用中的某项功能请求后台位置信息访问权限时,用户会看到系统对话框。此对话框包含一个选项,用于导航到设置页面上应用的定位权限选项。
只要您的应用已经遵循请求位置信息权限的最佳实践,就不需要进行任何更改来支持此行为。
用户可能会影响后台位置信息的准确性
如果用户请求大致位置信息,则用户在位置信息权限对话框中的选择也适用于后台位置信息。换句话话说,如果用户授予应用 ACCESS_BACKGROUND_LOCATION
权限但在前台仅授予大致位置信息访问权限,则应用在后台也仅具有大致位置信息访问权限。
其他资源
如需详细了解 Android 中的位置信息权限,请查看以下资料
Codelabs
视频
示例
- 示例应用,以演示位置信息权限的使用。