本页面将讨论以下内容:
- 如何请求后台位置信息访问权限。
- 如何根据应用的目标 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 中的位置权限,请查看以下资料:
Codelab
视频
示例
- 示例应用演示了如何使用位置信息权限。