最常见的建议解决方案是使用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 修改全局系统设置。
https://developer.android.com/reference/android/app/admin/DevicePolicyManager#setGlobalSetting(android.content.ComponentName,%20java.lang.String,%20java.lang.String)
你会这样做:
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