diff --git a/res/menu/menu_toolbar.xml b/res/menu/menu_toolbar.xml
index cfdaea6..1ba56a0 100644
--- a/res/menu/menu_toolbar.xml
+++ b/res/menu/menu_toolbar.xml
@@ -12,4 +12,9 @@
android:checked="true"
android:title="@string/menu_auto_updates_check"
app:showAsAction="never" />
+
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 0b6ae93..4be6bb7 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -55,6 +55,7 @@
Refresh
Auto updates check
+ Delete updates when installed
Delete
Copy URL
Export update
diff --git a/src/org/lineageos/updater/UpdatesActivity.java b/src/org/lineageos/updater/UpdatesActivity.java
index 6d6c1b4..3011d55 100644
--- a/src/org/lineageos/updater/UpdatesActivity.java
+++ b/src/org/lineageos/updater/UpdatesActivity.java
@@ -180,10 +180,11 @@ public class UpdatesActivity extends UpdatesListActivity {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
- case R.id.menu_refresh:
+ case R.id.menu_refresh: {
downloadUpdatesList(true);
return true;
- case R.id.menu_auto_updates_check:
+ }
+ case R.id.menu_auto_updates_check: {
boolean enable = !item.isChecked();
item.setChecked(enable);
PreferenceManager.getDefaultSharedPreferences(UpdatesActivity.this)
@@ -197,6 +198,16 @@ public class UpdatesActivity extends UpdatesListActivity {
UpdatesCheckReceiver.cancelUpdatesCheck(this);
}
return true;
+ }
+ case R.id.menu_auto_delete_updates: {
+ boolean enable = !item.isChecked();
+ item.setChecked(enable);
+ PreferenceManager.getDefaultSharedPreferences(UpdatesActivity.this)
+ .edit()
+ .putBoolean(Constants.PREF_AUTO_DELETE_UPDATES, enable)
+ .apply();
+ return true;
+ }
}
return super.onOptionsItemSelected(item);
}
diff --git a/src/org/lineageos/updater/controller/ABUpdateInstaller.java b/src/org/lineageos/updater/controller/ABUpdateInstaller.java
index 815c7ea..16320b9 100644
--- a/src/org/lineageos/updater/controller/ABUpdateInstaller.java
+++ b/src/org/lineageos/updater/controller/ABUpdateInstaller.java
@@ -15,8 +15,10 @@
*/
package org.lineageos.updater.controller;
+import android.content.Context;
import android.os.UpdateEngine;
import android.os.UpdateEngineCallback;
+import android.support.v7.preference.PreferenceManager;
import android.util.Log;
import org.lineageos.updater.misc.Constants;
@@ -42,6 +44,7 @@ class ABUpdateInstaller {
private final UpdaterController mUpdaterController;
private final String mDownloadId;
+ private final Context mContext;
private final UpdateEngineCallback mUpdateEngineCallback = new UpdateEngineCallback() {
@@ -86,15 +89,21 @@ class ABUpdateInstaller {
}
break;
}
+
+ boolean deleteUpdate = PreferenceManager.getDefaultSharedPreferences(mContext)
+ .getBoolean(Constants.PREF_AUTO_UPDATES_CHECK, false);
+ if (deleteUpdate) {
+ mUpdaterController.deleteUpdate(mDownloadId);
+ }
}
};
- static synchronized boolean start(UpdaterController updaterController,
+ static synchronized boolean start(Context context, UpdaterController updaterController,
String downloadId) {
if (sDownloadId != null) {
return false;
}
- ABUpdateInstaller installer = new ABUpdateInstaller(updaterController, downloadId);
+ ABUpdateInstaller installer = new ABUpdateInstaller(context, updaterController, downloadId);
if (installer.startUpdate()) {
sDownloadId = downloadId;
return true;
@@ -110,9 +119,11 @@ class ABUpdateInstaller {
return sDownloadId != null && sDownloadId.equals(downloadId);
}
- private ABUpdateInstaller(UpdaterController updaterController, String downloadId) {
+ private ABUpdateInstaller(Context context, UpdaterController updaterController,
+ String downloadId) {
mUpdaterController = updaterController;
mDownloadId = downloadId;
+ mContext = context;
}
private boolean startUpdate() {
diff --git a/src/org/lineageos/updater/controller/UpdaterService.java b/src/org/lineageos/updater/controller/UpdaterService.java
index c360032..d74fdc8 100644
--- a/src/org/lineageos/updater/controller/UpdaterService.java
+++ b/src/org/lineageos/updater/controller/UpdaterService.java
@@ -27,6 +27,7 @@ import android.os.Bundle;
import android.os.IBinder;
import android.support.v4.content.LocalBroadcastManager;
import android.support.v7.app.NotificationCompat;
+import android.support.v7.preference.PreferenceManager;
import android.text.format.Formatter;
import android.util.Log;
@@ -170,9 +171,17 @@ public class UpdaterService extends Service {
}
try {
if (Utils.isABUpdate(update.getFile())) {
- ABUpdateInstaller.start(mUpdaterController, downloadId);
+ ABUpdateInstaller.start(this, mUpdaterController, downloadId);
} else {
- if (update.getFile().getAbsolutePath().startsWith("/data/") &&
+ boolean deleteUpdate = PreferenceManager.getDefaultSharedPreferences(this)
+ .getBoolean(Constants.PREF_AUTO_UPDATES_CHECK, false);
+ if (deleteUpdate) {
+ // Renaming the file is enough to have it deleted automatically
+ File uncrytpFile = new File(
+ update.getFile().getAbsolutePath() + Constants.UNCRYPT_FILE_EXT);
+ update.getFile().renameTo(uncrytpFile);
+ installPackage(uncrytpFile);
+ } else if (update.getFile().getAbsolutePath().startsWith("/data/") &&
Utils.isDeviceEncrypted(this)) {
// uncrypt rewrites the file so that it can be read without mounting
// the filesystem, so create a copy of it.
diff --git a/src/org/lineageos/updater/misc/Constants.java b/src/org/lineageos/updater/misc/Constants.java
index 5b27bb2..b620458 100644
--- a/src/org/lineageos/updater/misc/Constants.java
+++ b/src/org/lineageos/updater/misc/Constants.java
@@ -25,6 +25,7 @@ public final class Constants {
public static final String PREF_LAST_UPDATE_CHECK = "last_update_check";
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 UNCRYPT_FILE_EXT = ".uncrypt";