El tiempo de reinicio del dispositivo Android Q no se actualiza

El tiempo de reinicio del dispositivo Android Q no se actualiza

Después de usar el dispositivo Android Q durante un período de tiempo, la hora del sistema volverá a la hora de arranque anterior después de reiniciar el dispositivo y se produce este problema.

Corrección: después de arrancar, establezca la hora del sistema en el kernel
1. Ruta del archivo:
android/framework/base/services/core/java/com/android/server/AlarmManagerService.java
2. Registro de modificación:

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() {
    
    

Supongo que te gusta

Origin blog.csdn.net/weixin_45080805/article/details/120748694
Recomendado
Clasificación