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";