我正在创建一个系统应用程序,我想启用设备的禁用自动时区值。
此代码不起作用,因为我们需要root权限才能更改系统设置。
Settings.Global.putInt(getContentResolver(), Settings.Global.AUTO_TIME_ZONE, isAutomatic ? 0 : 1);
我已经根据设备生根但没有成功,经过大量搜索后发现可以使用Reflection。有人知道怎么做。
答案 0 :(得分:1)
通过将apk放在system / priv-app而不是system / app中找到解决方案。
Reflection用于访问私有成员或类,Settings.Global不是私有api,但需要安全权限,这可以通过将apk放在system / priv-app文件夹而不是system / app中来解决。
如果设备已植根且apk在路径priv-app
中,则以下代码有效 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
Settings.Global.putInt(getContentResolver(), Settings.Global.AUTO_TIME_ZONE, isAutomatic ? 0 : 1);
} else {
android.provider.Settings.System.putInt(getContentResolver(), Settings.Global.AUTO_TIME_ZONE, isAutomatic ? 0 : 1);
}