使用模拟位置而不在设置中进行设置
我正在编写一个使用android中的位置模拟可能性的应用程序。
我想实现的是模拟我的位置,而无需在开发人员选项中设置“允许模拟位置”标志。
- 我知道这是可能的,因为它可以与此应用一起使用:https
- //play.google.com/store/apps/details?id=com.lexa.fakegps&hl=zh-
CN
我试过的
生成一个apk,将其移动到/ system / app,重新启动,
并且在清单中是否带有ACCESS_MOCK_LOCATION权限也尝试了它。
但这一切都会导致此异常:
RuntimeException:无法启动活动:SecurityException:需要ACCESS_MOCK_LOCATION安全设置
回答:
我已经反编译了com.lexa.fakegps
您提到的问题以及它的操作:
private int setMockLocationSettings() { int value = 1;
try {
value = Settings.Secure.getInt(getContentResolver(),
Settings.Secure.ALLOW_MOCK_LOCATION);
Settings.Secure.putInt(getContentResolver(),
Settings.Secure.ALLOW_MOCK_LOCATION, 1);
} catch (Exception e) {
e.printStackTrace();
}
return value;
}
private void restoreMockLocationSettings(int restore_value) {
try {
Settings.Secure.putInt(getContentResolver(),
Settings.Secure.ALLOW_MOCK_LOCATION, restore_value);
} catch (Exception e) {
e.printStackTrace();
}
}
/* every time you mock location, you should use these code */
int value = setMockLocationSettings();//toggle ALLOW_MOCK_LOCATION on
try {
mLocationManager.setTestProviderLocation(LocationManager.GPS_PROVIDER, fake_location);
} catch (SecurityException e) {
e.printStackTrace();
} finally {
restoreMockLocationSettings(value);//toggle ALLOW_MOCK_LOCATION off
}
由于这些代码的执行时间非常短,因此其他应用几乎无法检测到ALLOW_MOCK_LOCATION的更改。
另外,您还需要:
1.要求对设备具有root权限
2.将应用程序移至/system/app
或/system/priv-app
我在我的项目中尝试过,并且效果很好。
以上是 使用模拟位置而不在设置中进行设置 的全部内容, 来源链接: utcz.com/qa/400934.html