权限ACCESS_MOCK_LOCATION被忽略?

我没有进行过广泛的测试,但有证据表明应用程序清单中的android.permission.ACCESS_MOCK_LOCATION不能正常工作(即,如果存在 – 允许模拟位置提供程序,否则不行)。 因此, https://play.google.com/store/apps/details? id = com.lexa.fakegps这样的假GPS应用程序可以与任何应用程序一起使用,无论它是否设置了ACCESS_MOCK_LOCATION。 如果用户在设备设置中允许虚假位置,这似乎就足够了。

也许ACCESS_MOCK_LOCATION真的意味着应用程序可以是自己的模拟位置提供者? 如果是这样,那么它应该更像WRITE_MOCK_LOCATION,而不是名称所暗示的访问(读取)。 听起来更像是bug而不是function。 如果这是真的,那么就没有办法真正确保GPS位置是真实的,而不是假的?

由于没有人真正回答你的问题,我会提供一个答案:

也许ACCESS_MOCK_LOCATION真的意味着应用程序可以是自己的模拟位置提供者?

是。 该权限允许应用程序“访问”“模拟位置”开发人员function。 这允许开发者创建看似真实的模拟位置,以便开发/测试具有基于位置的特征的应用,而无需实际移动或改变(例如,硬连接假GPS)设备。

由于Google不知道您要测试的应用程序或者您希望如何提供虚假数据,因此它就是这样做的。 作为开发人员function,它可以减少此function对一般人群的影响。

在http://developer.android.com/reference/android/Manifest.permission.html中 ,它说Allows an application to create mock location providers for testing ,因此我认为您认为正确。

实际上,只有具有root权限的com.lexa.fakegps才能在没有ACCESS_MOCK_LOCATION情况下模拟位置。 此外,它需要将Allow mock locations切换到模拟位置,即使它具有root权限。 所以,我认为许可适用于不适用于系统应用的常见应用。 系统应用程序具有更多权限,无需在AndroidManifest.xml声明权限即可执行操作。

您首先需要参与开发人员模式,在Android 4.2.1中,您可以转到Settings – > About Tablet (靠近底部;可能称为类似电话),然后点击底部的Build number七次。 一旦开始点击,就会出现倒计时,向您展示成为开发人员需要多少钱。

点击后退按钮返回Settings ,现在您将在“关于”菜单上方find“ Developer options项 – 单击它,然后选中“ Allow mock locations下的“ DEBUGGING 。 您的设备现在应该正确尊重ACCESS_MOCK_LOCATION

(如果你这样做的动机是诱使Ingress相信你是一个门户网站,那么你运气不好 – 任何应用程序当然能够检测到这个设置已被使用并告诉你禁用它,所以你最好用它来补充你的XM供应。:-)

禁用该特定权限的MockLocation lint检查,即