为什么我需要打开定位服务才能与蓝牙设备配对?


16

每当我尝试将具有Android 6.0.1的Samsung Galaxy S6连接到启用蓝牙的设备时,它都会告诉我启用“定位服务”。

当我对此抱怨时,软件供应商回答:“影响蓝牙LE技术的Google Android API的最新更新要求授予位置权限才能使用该应用程序。”

我看不到有此需要。

本讨论讨论了这一点。该技术参考说,应用程序需要有一定的权限,而不是位置服务是有效的。

要通过蓝牙和Wi-Fi扫描访问附近的外部设备的硬件标识符,您的应用现在必须具有ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION权限

问题:这是否意味着软件供应商的声明不正确?


MM的重组肯定使许可系统感到厌烦(解释说,他们想到的是“蓝牙信标”,可以用来定位您)。据我所知,您的怀疑是合理的,供应商的陈述是不正确的:应用程序需要获得许可才能访问蓝牙。但是,如果他们需要定位服务来查找硬件(“在第二个焊点处右转,通过3号门处的晶体管……”),我会感到惊讶。我非常怀疑需要为此启用位置服务,但是我没有要验证的MM设备。
伊齐

Answers:


6

我对蓝牙的理解是,使用蓝牙的应用程序可以直接访问设备MAC地址以进行配对。我将以此为答案。

如果您可以读取WiFi或蓝牙发射器的MAC地址,则可以找到设备。这就是WiFi /蓝牙位置的工作方式;您可以侦听发射机的MAC地址,并在庞大的全球数据库中查找它们。

因此,理论上任何使用蓝牙和数据连接的应用程序都可以找到您的设备。我不确定这实际上是否可行;蓝牙没有与WiFi相同的范围和半永久性的接入点基础设施。

通过要求定位服务访问蓝牙,您可以确保用户了解他们的位置信息在使用蓝牙时可能会泄漏。在棉花糖之前的Android版本中,用户可以在未启用位置服务的情况下使用蓝牙,但位置信息可能会泄漏。在这些旧版本中,您还可以运行WiFi扫描来查找未启用位置服务的MAC地址,这再次意味着您的位置信息可能会泄漏。允许位置服务使用蓝牙的要求是关于确保禁用位置的人将其位置保密。

我将此问题描述为设计问题,而不是错误。一个错误大概是可以修复的,但是对我来说尚不清楚您是否可以使用蓝牙而不会泄漏位置信息。蓝牙是在任何人考虑使用WiFi和蓝牙定位服务之前创建的。


2

供应商是正确的,您需要启用定位服务以扫描WiFi或Bluetooth LE设备。

有关详细信息,请参见错误#185370。谷歌表示,他们已经在“未来版本”中对其进行了修复,但根据对该错误的评论,它仍未在Android 7中修复。


编辑:我之前说过,仅当开始扫描的应用程序在后台运行时,才需要位置服务。源代码仅在API目标为<Android M时才表明这是正确的。


如果这是一个Android错误,为什么供应商会正确?他们应该回答:“这是一个Android错误”
GUI Junkie

是否可以将设备链接到App外部的蓝牙?
GUI Junkie

您询问供应商的陈述是否不正确。这不是不正确的,您确实需要向该应用授予位置权限。此外,由于该错误,您需要启用定位服务
jomo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.