下面的列表展示了系统赋予app的权限,这些都是基于用户在权限申请提示框的选择:
精确的 | 近似的 | |
---|---|---|
当使用此App | ACCESS_FINE_LOCATION、ACCESS_COARSE_LOCATION | ACCESS_COARSE_LOCATION |
仅本次 | ACCESS_FINE_LOCATION、ACCESS_COARSE_LOCATION | ACCESS_COARSE_LOCATION |
拒绝 | 无定位权限 | 无定位权限 |
要确定当前系统赋予了什么权限给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.
locationPermissionRequest.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权限。
要请求用户将你的应用的位置访问从近似升级到精确,请执行以下操作:
- 在必要的时刻,澄清为何需要此类权限
- 再次同时获取ACCESS_COARSE_LOCATION和ACCESS_FINE_LOCATION权限。因为用户之前已经允许系统给予近期定位权限给App,本次的权限申请弹框显示不一样,如下图:
测试App使用近似定位
为了评估是否需要升级app来支持用户定制定位精确度,请完成一下的测试。
处理弹窗近似定位请求
为了确认App是否可以处理用户通过弹窗允许App近期定位权限需求,请执行以下步骤:
- 同时申请ACCESS_COARSE_LOCATION和ACCESS_FINE_LOCATION权限
- 在本文图二示例中,选择顶部近似定位选项,然后选择底部的仅在此应用运行时或者仅此次。
- 确认App是否工作正常,在只有近期定位的情况下。
从系统设置中降级为近期定位
为了确认App是否可以处理用户从设置中将精确定位降级成近似定位请求,请执行以下步骤:
- 同时申请ACCESS_COARSE_LOCATION和ACCESS_FINE_LOCATION权限
- 在本文图二示例中,选择顶部精确定位选项,然后选择底部的仅在此应用运行时或者仅此次。
- 打开设置中应用权限界面
- 在应用权限界面关闭精确定位,如下图:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
写在最后
很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从哪里入手去学习,对此我整理了一些资料
如果你熟练掌握以下列出的知识点,相信将会大大增加你通过前两轮技术面试的几率!这些内容都供大家参考,互相学习。
①「Android面试真题解析大全」PDF完整高清版+②「Android面试知识体系」学习思维导图压缩包,最后觉得有帮助、有需要的朋友可以点个赞
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!