Android Q 设备重启时间不更新
使用Android Q 设备一段时间之后,设备重启之后系统时间会恢复成之前开机的时间,出现此问题
fix:开机之后,set system time to kernel
1、文件路径:
android/framework/base/services/core/java/com/android/server/AlarmManagerService.java
2、修改记录:
diff --git a/services/core/java/com/android/server/AlarmManagerService.java b/services/core/java/com/android/server/AlarmManagerService.java
index 8315993..87194a7 100755
--- a/services/core/java/com/android/server/AlarmManagerService.java
+++ b/services/core/java/com/android/server/AlarmManagerService.java
@@ -1518,6 +1518,7 @@ class AlarmManagerService extends SystemService {
Slog.i(TAG, "Current time only " + mInjector.getCurrentTimeMillis()
+ ", advancing to build time " + systemBuildTime);
mInjector.setKernelTime(systemBuildTime);
+ new timeSetReceiver();
}
// Determine SysUI's uid
@@ -4155,6 +4156,8 @@ class AlarmManagerService extends SystemService {
public static final int APP_STANDBY_PAROLE_CHANGED = 6;
public static final int REMOVE_FOR_STOPPED = 7;
public static final int UNREGISTER_CANCEL_LISTENER = 8;
//add by hhm
+ public static final int CHECK_SYSTEM_TIME = 9;
AlarmHandler() {
super(Looper.myLooper());
@@ -4243,13 +4246,33 @@ class AlarmManagerService extends SystemService {
pi.unregisterCancelListener(mOperationCancelListener);
}
break;
-
+ //add hhm
+ case CHECK_SYSTEM_TIME:
+ Intent timeSetIntent = new Intent(Intent.ACTION_TIME_CHANGED);
+ timeSetIntent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING | Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);
+ getContext().sendBroadcastAsUser(timeSetIntent, UserHandle.ALL);
+ break;
default:
// nope, just ignore it
break;
}
}
}
+ // add by hhm
+ class timeSetReceiver extends BroadcastReceiver {
+ public timeSetReceiver() {
+ IntentFilter filter = new IntentFilter();
+ filter.addAction(Intent.ACTION_BOOT_COMPLETED);
+ getContext().registerReceiver(this, filter);
+ }
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
+ mHandler.sendEmptyMessage(AlarmHandler.CHECK_SYSTEM_TIME);
+ }
+ }
+ }
class ClockReceiver extends BroadcastReceiver {
public ClockReceiver() {