我希望Android应用程序相信自动时区设置为ON,即使实际上并非如此。我读到使用Settings.Global.AUTO_TIME变量检测自动时区,如果自动时区为ON,则返回值1,如果自动时区为OFF,则返回值0。 使用以下行
读取此变量Settings.Global.getInt(getContentResolver(), Settings.Global.AUTO_TIME)
我读到这个变量只能由系统应用程序设置。有办法以某种方式改变这个变量吗?我可以编写一个允许我更改此变量的应用程序吗?这可以通过root设备来完成。
答案 0 :(得分:0)
您可以使用Settings.Global.putInt(getContentResolver(), Settings.Global.AUTO_TIME, 1)
设置应用中的值。
您需要获得WRITE_SETTINGS
权限。
答案 1 :(得分:0)
最常见的建议解决方案是使用 Settings.Global.putInt(getContentResolver(), Settings.Global.AUTO_TIME, 1)
。不过,您最终会在 logcat 中看到此消息:
Setting auto_time has moved from android.provider.Settings.System to android.provider.Settings.Global, value is unchanged.
根据 Android 文档,应用无法修改这些设置。
https://developer.android.com/reference/android/provider/Settings.Global
<块引用>全局系统设置,包含始终适用于所有定义用户的首选项。应用程序可以读取这些但不允许写入;与“安全”设置一样,这些用于首选项,用户必须通过系统 UI 或这些值的专用 API 明确修改。
除非您的应用作为系统应用安装或由运行它的设备的制造商签名,否则这些设置是只读的。
大多数人最终会生根他们的设备,但还有另一种选择。设备所有者应用可以通过不同的 API 修改全局系统设置。
你会这样做:
DevicePolicyManager dpm = (DevicePolicyManager) getApplicationContext().getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName component = new ComponentName(getApplicationContext(), DeviceAdminReceiver.class);
dpm.setGlobalSetting(component, Settings.Global.AUTO_TIME, enable ? "1" : "0");
此替代方案最适合自制应用程序和基于 Android 的专有产品,因为该设备不能拥有用户帐户。 Play 商店不会以设备所有者身份安装应用,必须手动安装。
以下是使用 ADB 的方法:
https://developer.android.com/work/dpc/dedicated-devices/cookbook#dev-setup