是否有任何可能的方法可以在 Android 上启用模拟位置,而无需通过设置应用程序来实现?我想尝试直接从我的应用程序打开模拟位置。所以我想知道是否有一个 API 或者是否有某种我可以使用的 Intent。
4 回答
在 Marshmallow 之前,可以通过编程方式更改“允许模拟位置”设置(但它需要 root):
Settings.Secure.putInt(getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION, 1);
因此,不幸的是,您能做的最好的事情就是将用户指向使用以下代码设置模拟位置应用程序的实际屏幕:
startActivity(new Intent(android.provider.Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS));
在 Android 6+ 上,您可以运行 shell 命令appops
以允许某些应用程序模拟位置:
adb shell appops set <PACKAGE> android:mock_location allow
例如:
adb shell appops set ru.gavrikov.mocklocations android:mock_location allow
我不是开发人员,不确定您是否可以在您的应用程序中执行此操作,但我想Runtime.getRuntime().exec(cmd)
使用 root 权限运行会起作用。
Process proc = Runtime.getRuntime().exec(new String[]{"su","pm grant YOUR_APP_PACKAGE_NAME android.permission.WRITE_SECURE_SETTINGS", "settings put secure mock_location 1"});
proc.waitFor();
int 值 = Settings.Secure.getInt(getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION);
SOP.OUT("mock_location:::::::::::::::::::::::::::::::::" + value);
仅适用于有根设备
除非设备已植根,否则无法“以编程方式”执行此操作。