6

我没有进行广泛的测试,但有证据表明应用程序清单中的 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 读取,而不是顾名思义的访问(读取)。听起来更像是错误而不是功能。如果这是真的,那么有没有办法真正确保 GPS 位置是真实的,而不是假的?

4

4 回答 4

5

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此外,即使它具有 root 权限,它也需要切换Allow mock locations到模拟位置。所以,我认为权限是针对普通应用程序而不是系统应用程序的。系统应用程序无需在AndroidManifest.xml.

于 2014-09-16T03:29:23.460 回答
4

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

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

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

因为 Google 不知道您要测试什么应用程序,也不知道您将如何提供虚假数据,所以它这样做了。作为开发人员功能,它减少了此功能对一般人群的曝光。

于 2016-08-13T01:05:29.060 回答
2

您首先需要启用开发人员模式,在 Android 4.2.1 中,通过转到Settings -> About Tablet(靠近底部;对于手机可能称为类似的东西)并点击Build number底部七次来完成。一旦你开始点击,就会出现一个倒计时,向你展示成为一名开发人员还需要多少时间。

点击后退按钮返回Settings,现在您将在Developer options您所在的关于菜单上方找到一个项目 - 单击它,然后Allow mock locations在 下进行检查DEBUGGING。您的设备现在应该正确尊重ACCESS_MOCK_LOCATION.

(如果您这样做的动机是诱使 Ingress 相信您在某个门户附近,那么您就不走运了 - 任何应用程序当然都能够检测到此设置已被启用并告诉您禁用它,所以您充其量可以用它来补充你的 XM 供应。:-)

于 2013-02-04T05:19:01.423 回答
1

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

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <uses-permission
        android:name="android.permission.ACCESS_MOCK_LOCATION"
        tools:ignore="MockLocation" />  
</manifest>
于 2016-07-26T22:25:31.490 回答