开发 Android 定位SDK 开发指南 实用工具 Android 12 权限说明

Android12 权限说明 最后更新时间: 2022年02月24日

1、新增模糊定位功能

Android12新增模糊定位功能,使用户可以更加细粒度的管控设备位置权限。

2、权限使用说明

2.1 运行时申请

2.1.1 使用以 Android 12 或更高版本为目标平台的应用时,用户可以请求应用只能访问大致位置信息。

如请求 ACCESS_FINE_LOCATION运行时权限,您还必须请求 ACCESS_COARSE_LOCATION权限。

注意:请勿单独请求 ACCESS_FINE_LOCATION 权限,如果您尝试仅请求 ACCESS_FINE_LOCATION,系统会在某些 Android 12 版本上忽略该请求。如果您的应用以 Android 12 或更高版本为目标平台,系统会在 Logcat 中记录以下错误消息:

ACCESS_FINE_LOCATION must be requested with ACCESS_COARSE_LOCATION. 

当你的应用仅请求ACCESS_COARSE_LOCATION时,系统显示如下图1所示: 

  

图1

当您的应用同时请求 ACCESS_FINE_LOCATION 和 ACCESS_COARSE_LOCATION 时,系统权限对话框将为用户提供以下选项,如图2:

  • 确切位置:允许您的应用获取确切位置信息。
  • 大致位置:允许您的应用仅获取大致位置信息。

 

图2

2.1.2 请求升级到确切位置

如需请求用户将应用的位置信息使用权从大致位置升级到确切位置,请执行以下操作:

  1. 如有必要,请说明您的应用为何需要获取权限。
  2. 再次同时请求 ACCESS_FINE_LOCATION 和 ACCESS_COARSE_LOCATION 权限。由于用户已允许系统向您的应用授予大致位置信息使用权,因此这次系统对话框有所不同,如图 3和图 4 所示:

 

图 3. 用户之前选择了大致位置和仅在使用该应用时允许

 

图 4. 用户之前选择了大致位置和仅限这一次

2.2 系统设置

在 Android 12 和更高版本中,用户可以转到系统设置,以设置任何应用的首选位置信息精确度,而不管该应用的目标 SDK 版本是什么。即使您的应用安装在搭载 Android 11 或更低版本的设备上,用户随后又将该设备升级到 Android 12 或更高版本,也是如此。

注意:如果用户从权限对话框或在系统设置中将应用的位置信息使用权从确切位置降级到大致位置,系统会重启应用的进程。

 

3、精确度

3.1 大致位置

提供设备位置的估算值,将范围限定在大约 1.6 公里(1 英里)内。当您声明 ACCESS_COARSE_LOCATION 权限(而非 ACCESS_FINE_LOCATION 权限)时,您的应用会使用这种级别的位置信息精确度。

3.2 确切位置

提供尽可能准确的设备位置估算值,通常将范围限定在大约 50 米(160 英尺)内,有时精确到几米(10 英尺)范围以内。当您声明 ACCESS_FINE_LOCATION 权限时,您的应用会使用这种级别的位置信息精确度。

如果用户授予大致位置信息权限,您的应用只能获取大致位置信息(无论它声明了哪些位置信息权限)。

当用户仅授予大致位置信息使用权时,您的应用应该仍会正常工作。如果应用中的某项功能确实需要使用 ACCESS_FINE_LOCATION 权限访问确切位置,您可以请求用户允许该应用获取确切位置信息。

返回顶部 示例中心 常见问题 智能客服 公众号
二维码