首页 > 解决方案 > 需要在 Android 10.0 上为蓝牙低功耗扫描启用位置信息

问题描述

将我的 Pixel XL 升级到 Android 版本 10.0 后,蓝牙低功耗 (BLE) 扫描只有在我打开位置功能后才能工作。

直到现在,这还不是问题,它可以在运行 Android 9.0、8.0 和 6.0.1 的多台设备上运行。

我的应用程序仅使用在前台扫描BluetoothLeScanner startScan(List<ScanFilter> filters, ScanSettings settings, ScanCallback callback)

我的应用程序具有 FINE_LOCATION、COARSE_LOCATION 和 BLUETOOTH 权限,我尝试添加 ACCESS_BACKGROUND_LOCATION 权限但没有运气。

Android 10.0 中是否对应用程序扫描蓝牙设备有更严格的要求,我找不到任何关于此的信息,希望我不必要求用户打开位置来让我的应用程序工作。

标签: androidbluetoothbluetooth-lowenergyandroid-10.0

解决方案


从 Android 10 开始,现在需要打开 ACCESS_FINE_LOCATION 才能执行蓝牙操作。这样做的原因是蓝牙可用于收集有关用户位置的信息(例如使用 BLE 信标),因此应声明相关的应用权限。

对于 Android 9 及更低版本,ACCESS_COARSE_LOCATION 就足够了,这可能就是您的应用正常运行的原因。

更多信息可以在这里找到:-

我希望这有帮助。


推荐阅读