根据 Android 官方文档,在安卓系统中关闭位置服务后,所有应用程序,包括 Google 服务都无法获得位置更新。但是实情似乎不是这样。
昨天收到一位朋友从手机 QQ 中发送过来的位置消息,查看的时候不小心点到了显示自己的位置信息,然后豁然看到 QQ 里面的地图迅速定位我的位置。这让我心里一惊:平常我的手机里位置服务都是关闭的,用地图的时候还会接到提示要求打开定位服务呢。因此就仔细查了查。
安卓官方文档中关于位置信息是这么写的:
重要提示:
如果您关闭自己设备的位置信息,也就同时关闭了 Google 应用和非 Google 应用的位置信息。这意味着应用不能获得您设备的位置信息,且很多实用功能都将会被停用。
果壳问答上也有人解释说,
安卓手机设置里,有一个位置服务选项,点击打开会发现里面有:1、允许访问我的位置,2、GPS 卫星定位,3、WLAN 及移动网络定位。
如果你把1、允许访问我的位置,这个关闭了,你的应用软件将没有权限去获取位置信息。系统不会无缘无故地去定位,必定是有软件提出定位需求,系统才去采集位置信息,接着把采集到的信息送给软件。安卓系统是手机旅店的大管家,软件都是小房客。
应用软件是没有可能通过自行读取基站和 wifi 的信息,自行计算定位,而不依赖安卓。除非安卓系统被破解了,软件获得了极高的权限。
既然有人说可能是因为手机 root 了,软件获得了超越系统的权限。root 后的安卓系统中有 root 权限管理,每次软件需要 root 权限都会先申请,同意了才能用。我特地用一台没有 root 过的 Nexus 5 手机试过,同样在系统的设置里关闭了位置服务,还是可以在 QQ 里查看到自己的精确位置,而且是实时更新的。
可见这个问题与系统是否破解过没有关系。也可能是bug,我已经在 Android 开源论坛提交了 bug 报告,希望会有回应。
忘了说一下,我的设备是 Nexus 5,系统是原生的 Android 4.4.2。如果有朋友用的是安卓系统,不妨测试一下并在下方评论分享你的测试结果。©
本文发表于水景一页。永久链接:<http://cnzhx.net/blog/a-suspicion-on-location-service-in-android/>。转载请保留此信息及相应链接。
MD 这个问题很严重啊
非常同意,就是不知道开发者会怎么想
嗯,这个问题非常严重
关闭安卓位置服务,安全软件禁用通过移动网络,wifi网络获取定位
结果还是可以确认位置…虽然这时的误差相当大…但很不爽啊…
你测试的结果误差很大吗?我这里误差很小啊,跟用GPS定位差不多。
50-1000米的误差…
估计是用了基站定位
误差还挺大嘛。我虽然没有仔细看偏差有多大,但是从显示的位置来看,跟以前用 Nokia N8 的时候用 GPS 定位没什么区别。
我这GPS定位可以精确到0-5米
要真这样,就非得吐血了啊…