【问题标题】:Turn on Android LE scanning without asking user for permission在不征求用户许可的情况下开启 Android LE 扫描
【发布时间】:2021-01-19 16:45:15
【问题描述】:

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

【问题讨论】:

  • 除了您得到的已经很棒的答案之外,我建议您对您需要权限的内容保持开放态度。在请求许可之前,您可以显示带有链接的信息文本以获取更多信息。这可能是ux.stackexchange.com 的另一个问题

标签: android bluetooth-lowenergy iot


【解决方案1】:

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

中提到过

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

这是一个无法克服的操作系统要求。你可能已经在Android developer page for BLE:-

上看到过这个

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

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

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

【讨论】:

    猜你喜欢
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多