From a409a4a03d64642453eef5566ce3593742ebacd4 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 ff3252b..02c46f6 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 7bdaa4c..ca09914 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 c5d43f0..6eb91ef 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 93dac4a..b5764ef 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";