在Android 6上禁用位置权限似乎会影响WiFi参数查询

时间:2016-01-22 22:38:14

标签: android android-wifi

我有一个Android应用程序,可以访问设备的位置,然后查询WiFi参数。一切都很顺利。

如果我关闭应用的位置权限(就像我在Android 6中所做的那样),我就不再获得设备的位置(正如预期的那样)。但是,当我尝试查询WiFi参数时,我还获得了修改后的 WiFiInfo 对象。特别是:

  • getScanResults()通常会列出所有可用的网络,但关闭“位置”后,它只包含设备所连接的网络。
  • 如果我查看找到的网络功能,则字符串为空。通常它包含诸如无线加密信息之类的信息。

有没有人见过这个?我已使用相同的代码验证了它,并在2个不同的设备上打开/关闭了位置权限。对于发生了什么有什么想法吗?

更新:在进一步审核时,当我说getScanResults()返回有关我们连接的设备的AP的信息时,我错了。它实际上返回一个空列表。如果位置权限被拒绝,这将支持Google不希望我们获得有关本地AP的任何信息的想法。

1 个答案:

答案 0 :(得分:1)

基于WiFi的位置基本上是在已知AP和位置的巨型数据库中查找WiFi接入点信息以发现设备所在的位置。当您启用WiFi或网络位置时,这就是Google,SkyHook和Apple等服务的使用方式。

我怀疑Google正在尝试阻止某个应用程序访问信息,这些信息可以在禁用位置时从中获取位置。当位置被禁用时,他们之前已阻止访问Google Play位置服务,但这不会阻止设备进行扫描,收集将发送给Google的相同数据,并将此数据发送到其他服务以发现位置。