自Marshmallow(Android 6.0)以后,进行BLE扫描需要开启设备位置权限。从技术上讲,我并不清楚为什么只有开启位置权限才能进行BLE设备的扫描。请问Google这样做的原因是什么?
自Marshmallow(Android 6.0)以后,进行BLE扫描需要开启设备位置权限。从技术上讲,我并不清楚为什么只有开启位置权限才能进行BLE设备的扫描。请问Google这样做的原因是什么?
问:为什么谷歌会这样做?
答:因为使用BLE扫描通常是用来确定用户在使用蓝牙LE信标时的位置。
当这个变化还没有发布时,我曾在2015年的Google I/O问答环节中与谷歌工程师讨论过这个问题。当时,我的担忧是需要请求蓝牙LE管理权限才能扫描位置信标。对我来说,这是一个问题,因为用户理解我的应用程序需要找到用户的位置,但不理解为什么需要管理蓝牙。
工程师的回答是,在Android M中需要位置权限(和打开位置)才能做到这一点,这样可以使用户更清楚地了解需要这样做的原因。不幸的是,从我的角度来看,由于历史原因,仍然需要蓝牙管理权限。
你可以持不同意见,不过推理是很明确的。如果一个应用程序可以扫描蓝牙设备并读取它们的MAC地址或其他标识符,那么如果应用程序开发人员知道其中一些已扫描设备的位置,它也可以确定用户的位置。
为什么相同的位置权限逻辑不适用于扫描WiFi或蓝牙Classic(两者都可以实现同样的功能)尚不清楚。也许只是因为谷歌正在准备使用其Eddystone标准加入蓝牙LE信标游戏。
更正:需要WiFi扫描的位置权限。