微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

由于位置许可,BLE 蓝牙扫描不适用于 Android 10 和 11

如何解决由于位置许可,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){ //代码在这里.. }

解决方法

尝试使用 requestPermissions 在您的应用程序启动时实际请求用户的许可:

// Request location permission,needed for BLE Scan
ActivityCompat.requestPermissions(this,new String[]{
        Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION},2);

您可以在文档的 this 页上找到有关如何更好地处理此事件的更多信息。

,

请确认您是否根据os版本实现了位置权限检查

  1. Android 8 (≥8):后台应用每小时只能检索几次用户的位置。

  2. 在 Android 10(

  3. Android 10(≥10),后台位置作为独立资源出现。除了前台权限外,应用程序还必须明确请求此权限。

  4. Android 11(≥11),不能与其他人同时请求后台位置权限。应用程序必须单独请求。此外,请求此权限不会像其他权限一样立即提示用户,而是会将用户带到 /Settings 页面/Location 权限会话,以便用户可以更新权限级别。

注意:有时当应用程序安装在工作模式配置文件中时,即使我们从应用程序允许它,我们也必须手动启用设置权限

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。