以编程方式启用模拟位置

时间:2013-07-01 21:25:58

标签: android android-intent mocking

是否有任何可能的方法在Android上启用模拟位置而无需通过设置应用程序执行此操作?我想尝试直接从我的应用程序打开Mock Locations。所以我想知道是否有一个API,或者是否有某种意图我可以使用。

4 个答案:

答案 0 :(得分:1)

在Marshmallow之前,"允许模拟位置"设置可以通过编程方式进行更改(但需要root):

Settings.Secure.putInt(getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION, 1);

所以,不幸的是,您可以做的最好的事情是将用户指向使用以下代码设置模拟位置应用程序的实际屏幕:

startActivity(new Intent(android.provider.Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS));

答案 1 :(得分:0)

没有办法做到这一点"以编程方式"除非设备已植根。

答案 2 :(得分:0)

Process proc = Runtime.getRuntime()。exec(new String [] {“ su”,“ pm授予YOUR_APP_PACKAGE_NAME android.permission.WRITE_SECURE_SETTINGS”,“设置为安全的模拟位置1”});

proc.waitFor();

int值= Settings.Secure.getInt(getContentResolver(),                 Settings.Secure.ALLOW_MOCK_LOCATION);

SOP.OUT(“模拟位置::::::::::::::::::::::::::::::::::” +值);

仅在有根设备上工作

答案 3 :(得分:0)

在 Android 6+ 上,您可以运行 shell 命令 appops 以允许某些应用模拟位置:

adb shell appops set <PACKAGE> android:mock_location allow

例如:

adb shell appops set ru.gavrikov.mocklocations android:mock_location allow

我不是开发人员,不确定您是否可以在您的应用程序中执行此操作,但我想以 root 权限运行 Runtime.getRuntime().exec(cmd) 会起作用。