Android 修改系统时间源码阅读
链接:XRefAndroid - Support Android 16.0 & OpenHarmony 5.0 (AndroidXRef/AospXRef)
这里看的Android 10的代码,选中Android 10,勾选所有工程,搜索DateTimeSettings:
看到showTimePicker应该是显示一个设置时间的弹框:
发现当前类没有这个方法,在其父类的父类SettingsPreferenceFragment中找到该方法定义:
看下SettingsDialogFragment如何创建dialog:
接着查看parentFragment(即DateTimeSettings)里面的onCreateDialog代码:
然后看TimePreferenceController这个类的buildTimePicker方法:
而且这里还顺便看到了设置系统时间的方法setTime。
可见, 系统时间设置,精确到分,秒和毫秒都置为0。 并且还有个“最小日期”时间戳,设置的时间若小于那个最小时间,则置为最小时间。另外,还有个最大时间(Integer.MAX_VALUE,单位:秒),不能大于那个最大时间。 然后调用AlarmManager的setTime方法设置时间:
((AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE)).setTime(when);