写点什么

Android S 新特性介绍 - 近似定位,快速学会

用户头像
Android架构
关注
发布于: 48 分钟前

| 拒绝 | 无定位权限 | 无定位权限 |


要确定当前系统赋予了什么权限给 App,你可以检查权限请求的返回值。你可以使用下面示例中的 Jetpack 库,也可以使用平台库进行权限申请和返回值获取。具体可参考:[manage the permission request code yourself](


)


val locationPermissionRequest = registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->when {permissions.getOrDefault(Manifest.permission.ACCESS_FINE_LOCATION, false) -> {// Precise location access granted.}permissions.getOrDefault(Manifest.permission.ACCESS_COARSE_LOCATION, false) -> {// Only approximate location access granted.} else -> {// No location access granted.}}}


// ...


// Before you perform the actual permission request, check whether your app// already has the permissions, and whether your app needs to show a permission// rationale dialog. For more details, see Request permissions.locatio


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


nPermissionRequest.launch(arrayOf(Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION))

用户选择同样可以影响后台定位

如果系统赋予 App ACCESS_BACKGROUND_LOCATION,用户在定位权限弹框的选择同样会影响后台定位。 例如,如果用户允许 ACCESS_BACKGROUND_LOCATION,但是只允许前台使用近似定位,那么 App 也只能拥有近似定位权限在后台。

升级为精确定位

近似定位可能影响那些依赖 ACCESS_FINE_LOCATION 权限的 App.


当咨询用户许可精确定位的时候,请务必确认 App 是否真的需要精度如此之高的定位。如果 App 需要和附近的蓝牙或者 WIFI 进行连接,请确认使用[companion device pairing](


)或者[Bluetooth permissions](


)来替代 ACCESS_FINE_LOCATION 权限。


要请求用户将你的应用的位置访问从近似升级到精确,请执行以下操作:


  1. 在必要的时刻,澄清为何需要此类权限

  2. 再次同时获取 ACCESS_COARSE_LOCATION 和 ACCESS_FINE_LOCATION 权限。因为用户之前已经允许系统给予近期定位权限给 App,本次的权限申请弹框显示不一样,如下图:



测试 App 使用近似定位

为了评估是否需要升级 app 来支持用户定制定位精确度,请完成一下的测试。

处理弹窗近似定位请求

为了确认 App 是否可以处理用户通过弹窗允许 App 近期定位权限需求,请执行以下步骤:


  1. 同时申请 ACCESS_COARSE_LOCATION 和 ACCESS_FINE_LOCATION 权限

  2. 在本文图二示例中,选择顶部近似定位选项,然后选择底部的仅在此应用运行时或者仅此次。

  3. 确认 App 是否工作正常,在只有近期定位的情况下。

从系统设置中降级为近期定位

为了确认 App 是否可以处理用户从设置中将精确定位降级成近似定位请求,请执行以下步骤:


  1. 同时申请 ACCESS_COARSE_LOCATION 和 ACCESS_FINE_LOCATION 权限

  2. 在本文图二示例中,选择顶部精确定位选项,然后选择底部的仅在此应用运行时或者仅此次。

  3. 打开设置中应用权限界面

  4. 在应用权限界面关闭精确定位,如下图:

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
Android S新特性介绍-近似定位,快速学会