首页 > 解决方案 > 在不征求用户许可的情况下开启 Android LE 扫描

问题描述

一些调查和分析表明,用户经常拒绝出现在移动应用程序中的位置许可请求,即使此权限对应用程序至关重要,例如,应用程序会自动扫描处理业务逻辑并与移动设备交换数据的场所中的设备应用程序。权限请求拒绝率如此之高,以至于给业务带来了问题。Android中是否有任何方法可以避免这种情况,例如声明一些经过验证的设备可以在未经许可的情况下进行扫描?我想到了https://developer.android.com/guide/topics/connectivity/companion-device-pairing但这也意味着弹出用户手动工作的请求。今天有什么办法可以在幕后进行吗?

标签: androidbluetooth-lowenergyiot

解决方案


不幸的是,出于隐私和安全原因,这是不可能的。在 Android 设备上启用 BLE 与位置权限密切相关。唯一可能的解决方法是使用经典蓝牙而不是 BLE。我不是 100% 确定这个,但这篇文章中提到了:-

如果没有位置权限,任何人都无法使用 BLE 扫描 API,而且,在大多数设备上,如果没有活动的位置服务,它是无用的。然而,低功耗蓝牙是所谓的蓝牙经典的扩展​​,有趣的是,谷歌决定这个 API 不需要调用位置权限。

这是一个无法克服的操作系统要求。您可能已经在BLE 的 Android 开发者页面上看到了这一点:-

为了在您的应用程序中使用蓝牙功能,您必须声明两个权限。其中第一个是蓝牙。您需要此权限才能执行任何蓝牙通信,例如请求连接、接受连接和传输数据。

您必须声明的另一个权限是 ACCESS_FINE_LOCATION。您的应用需要此权限,因为蓝牙扫描可用于收集有关用户位置的信息。此信息可能来自用户自己的设备,以及在商店和交通设施等位置使用的蓝牙信标。

您可以在此处找到有关此的更多信息:-


推荐阅读