首页 > 解决方案 > 由于位置许可,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){ //这里的代码.. }

标签: androidbluetooth-lowenergy

解决方案


请根据操作系统版本验证是否实现了位置权限检查

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

  2. 在 Android 10(<10) 之前,位置权限是单一资源:应用程序只需要一次权限即可在任何地方(前台和后台)和每次使用。

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

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

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


推荐阅读