summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/AlarmManagerService.java11
1 files changed, 11 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/AlarmManagerService.java b/services/core/java/com/android/server/AlarmManagerService.java
index 8b32c16acb42..21dae4f2139a 100644
--- a/services/core/java/com/android/server/AlarmManagerService.java
+++ b/services/core/java/com/android/server/AlarmManagerService.java
@@ -36,6 +36,7 @@ import android.database.ContentObserver;
import android.net.Uri;
import android.os.Binder;
import android.os.Bundle;
+import android.os.Environment;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
@@ -949,6 +950,16 @@ class AlarmManagerService extends SystemService {
// because kernel doesn't keep this after reboot
setTimeZoneImpl(SystemProperties.get(TIMEZONE_PROPERTY));
+ // Also sure that we're booting with a halfway sensible current time
+ if (mNativeData != 0) {
+ final long systemBuildTime = Environment.getRootDirectory().lastModified();
+ if (System.currentTimeMillis() < systemBuildTime) {
+ Slog.i(TAG, "Current time only " + System.currentTimeMillis()
+ + ", advancing to build time " + systemBuildTime);
+ setKernelTime(mNativeData, systemBuildTime);
+ }
+ }
+
PowerManager pm = (PowerManager) getContext().getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "*alarm*");