From c34c2665131f35a39852d11442d2fd147ad0b6bf Mon Sep 17 00:00:00 2001 From: Gabriele M Date: Sat, 24 Mar 2018 16:17:19 +0100 Subject: [PATCH] Clear NEEDS_REBOOT preference on reboot UpdateEngine doesn't send an initial notification to bound client if the last status is not known, so clear the preference when we detect that the device has been rebooted. Change-Id: Ib15dff5fa8ac9ec07a68018a83683cc561fd3e85 --- AndroidManifest.xml | 6 +++++- src/org/lineageos/updater/UpdaterReceiver.java | 7 +++++++ .../lineageos/updater/controller/ABUpdateInstaller.java | 7 +++---- src/org/lineageos/updater/misc/Constants.java | 1 + 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index f95e2124..0daf605f 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -35,7 +35,11 @@ - + + + + + diff --git a/src/org/lineageos/updater/UpdaterReceiver.java b/src/org/lineageos/updater/UpdaterReceiver.java index 7bdaa4ca..ca099144 100644 --- a/src/org/lineageos/updater/UpdaterReceiver.java +++ b/src/org/lineageos/updater/UpdaterReceiver.java @@ -18,7 +18,11 @@ package org.lineageos.updater; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.os.PowerManager; +import android.support.v7.preference.PreferenceManager; + +import org.lineageos.updater.misc.Constants; public class UpdaterReceiver extends BroadcastReceiver { @@ -30,6 +34,9 @@ public class UpdaterReceiver extends BroadcastReceiver { if (ACTION_INSTALL_REBOOT.equals(intent.getAction())) { PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); pm.reboot(null); + } else if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) { + SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context); + pref.edit().remove(Constants.PREF_NEEDS_REBOOT).apply(); } } } diff --git a/src/org/lineageos/updater/controller/ABUpdateInstaller.java b/src/org/lineageos/updater/controller/ABUpdateInstaller.java index 294dd4a1..2dc90931 100644 --- a/src/org/lineageos/updater/controller/ABUpdateInstaller.java +++ b/src/org/lineageos/updater/controller/ABUpdateInstaller.java @@ -42,7 +42,6 @@ class ABUpdateInstaller { private static final String TAG = "ABUpdateInstaller"; private static final String PREF_INSTALLING_AB_ID = "installing_ab_id"; - private static final String PREF_NEEDS_REBOOT = "needs_reboot"; private static ABUpdateInstaller sInstance = null; @@ -119,13 +118,13 @@ class ABUpdateInstaller { static synchronized boolean isInstallingUpdate(Context context) { SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context); return pref.getString(ABUpdateInstaller.PREF_INSTALLING_AB_ID, null) != null || - pref.getBoolean(ABUpdateInstaller.PREF_NEEDS_REBOOT, false); + pref.getBoolean(Constants.PREF_NEEDS_REBOOT, false); } static synchronized boolean isInstallingUpdate(Context context, String downloadId) { SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context); return downloadId.equals(pref.getString(ABUpdateInstaller.PREF_INSTALLING_AB_ID, null)) || - pref.getBoolean(ABUpdateInstaller.PREF_NEEDS_REBOOT, false); + pref.getBoolean(Constants.PREF_NEEDS_REBOOT, false); } private ABUpdateInstaller(Context context, UpdaterController updaterController) { @@ -233,7 +232,7 @@ class ABUpdateInstaller { private void installationDone(boolean needsReboot) { PreferenceManager.getDefaultSharedPreferences(mContext).edit() - .putBoolean(PREF_NEEDS_REBOOT, needsReboot) + .putBoolean(Constants.PREF_NEEDS_REBOOT, needsReboot) .remove(PREF_INSTALLING_AB_ID) .apply(); } diff --git a/src/org/lineageos/updater/misc/Constants.java b/src/org/lineageos/updater/misc/Constants.java index fe67a4d5..6318874a 100644 --- a/src/org/lineageos/updater/misc/Constants.java +++ b/src/org/lineageos/updater/misc/Constants.java @@ -27,6 +27,7 @@ public final class Constants { public static final String PREF_AUTO_UPDATES_CHECK = "auto_updates_check"; public static final String PREF_AUTO_DELETE_UPDATES = "auto_delete_updates"; public static final String PREF_MOBILE_DATA_WARNING = "pref_mobile_data_warning"; + public static final String PREF_NEEDS_REBOOT = "needs_reboot"; public static final String UNCRYPT_FILE_EXT = ".uncrypt";