android - 由于位置许可,BLE 蓝牙扫描无法在 Android 10 和 11 上运行
问题描述
我正在研究 BLE 蓝牙扫描正在除 Android 10 和 11 之外的所有设备上工作。更新应用程序后,Android 10 和 11 中的蓝牙扫描不起作用。有时即使在允许位置权限之后,应用程序也必须从应用程序设置中重新授予权限。为什么这不为人所知,而总是在
if (ContextCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED){ //这里的代码.. }
解决方案
请根据操作系统版本验证是否实现了位置权限检查
Android 8 (≥8):后台应用每小时只能检索几次用户的位置。
在 Android 10(<10) 之前,位置权限是单一资源:应用程序只需要一次权限即可在任何地方(前台和后台)和每次使用。
Android 10(≥10),后台位置作为独立资源而来。除了前台权限之外,应用程序还必须明确请求此权限。
Android 11(≥11),不能和其他人同时申请后台位置权限。应用程序必须单独请求。此外,请求此权限不会立即提示用户其他权限,但会将用户带到 /Settings 页面/Location 权限会话,以便用户可以更新权限级别。
注意:有时当应用程序安装在工作模式配置文件中时,即使我们从应用程序允许它,我们也必须手动启用设置权限
推荐阅读
- instagram-graph-api - Instagram graphql:查询用户是否关注你
- ios - 有没有办法防止ios帧率开始低
- python - 将 Pandas 列从天转换为天、小时、分钟
- kotlin - 如何在 Kotlin Arrow FX 中组合 IO 函数和其他效果
- regex - 如何匹配(不包括)两个字符串之间的多行文本中所有字符的所有实例
- r - 如何在循环中获取摘要
- awk - AWK 处理文件需要很长时间
- node.js - 如何解决:当前平台上递归监视功能不可用,正在用于运行 Node.js
- vue.js - 在 Vue.js 应用中实现屏幕控制台日志组件
- python - Python中的Regrid Netcdf文件