diff --git a/app/src/main/java/org/lineageos/updater/UpdateImporter.java b/app/src/main/java/org/lineageos/updater/UpdateImporter.java
index c3adfe9cb0625ead0f4e8efe71cd4006f10e0247..5676665e9ee40bb039da57361bc20d226f364d9a 100644
--- a/app/src/main/java/org/lineageos/updater/UpdateImporter.java
+++ b/app/src/main/java/org/lineageos/updater/UpdateImporter.java
@@ -41,7 +41,7 @@ public class UpdateImporter {
private static final int REQUEST_PICK = 9061;
private static final String TAG = "UpdateImporter";
private static final String MIME_ZIP = "application/zip";
- private static final String FILE_NAME = "localUpdate.zip";
+ public static final String FILE_NAME = "localUpdate.zip";
private static final String METADATA_PATH = "META-INF/com/android/metadata";
private static final String METADATA_TIMESTAMP_KEY = "post-timestamp=";
private static final String METADATA_ANDROID_SDK_KEY = "post-sdk-level=";
diff --git a/app/src/main/java/org/lineageos/updater/UpdatesActivity.java b/app/src/main/java/org/lineageos/updater/UpdatesActivity.java
index 65f52127fc9d10b2a1472630bbecd323819a955f..5d845f2355c0cf6dbe804b8f9bcd27243c37c6b3 100644
--- a/app/src/main/java/org/lineageos/updater/UpdatesActivity.java
+++ b/app/src/main/java/org/lineageos/updater/UpdatesActivity.java
@@ -110,6 +110,10 @@ public class UpdatesActivity extends UpdatesListActivity implements UpdateImport
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_updates);
+ if (UpdaterService.isDeviceRebooted()) {
+ Utils.removeInstalledUpdate(this);
+ }
+
mUpdateImporter = new UpdateImporter(this, this);
UiModeManager uiModeManager = getSystemService(UiModeManager.class);
@@ -384,9 +388,11 @@ public class UpdatesActivity extends UpdatesListActivity implements UpdateImport
if (sortedUpdates.isEmpty()) {
findViewById(R.id.no_new_updates_view).setVisibility(View.VISIBLE);
findViewById(R.id.content).setVisibility(View.GONE);
+ findViewById(R.id.available_update_header).setVisibility(View.GONE);
} else {
findViewById(R.id.no_new_updates_view).setVisibility(View.GONE);
findViewById(R.id.content).setVisibility(View.VISIBLE);
+ findViewById(R.id.available_update_header).setVisibility(View.VISIBLE);
sortedUpdates.sort((u1, u2) -> Long.compare(u2.getTimestamp(), u1.getTimestamp()));
for (UpdateInfo update : sortedUpdates) {
updateIds.add(update.getDownloadId());
@@ -547,6 +553,7 @@ public class UpdatesActivity extends UpdatesListActivity implements UpdateImport
}
} else {
findViewById(R.id.content).setVisibility(View.GONE);
+ findViewById(R.id.available_update_header).setVisibility(View.GONE);
findViewById(R.id.no_new_updates_view).setVisibility(View.GONE);
findViewById(R.id.refresh_progress).setVisibility(View.VISIBLE);
}
@@ -561,9 +568,10 @@ public class UpdatesActivity extends UpdatesListActivity implements UpdateImport
} else {
findViewById(R.id.refresh_progress).setVisibility(View.GONE);
}
-
+
if (mAdapter.getItemCount() > 0) {
findViewById(R.id.content).setVisibility(View.VISIBLE);
+ findViewById(R.id.available_update_header).setVisibility(View.VISIBLE);
} else {
findViewById(R.id.no_new_updates_view).setVisibility(View.VISIBLE);
}
diff --git a/app/src/main/java/org/lineageos/updater/UpdatesCheckReceiver.java b/app/src/main/java/org/lineageos/updater/UpdatesCheckReceiver.java
index 61bd5302bef64be837b9d1ebdabad03dae5146c6..dff962739385f6936418d49ac81df202060df660 100644
--- a/app/src/main/java/org/lineageos/updater/UpdatesCheckReceiver.java
+++ b/app/src/main/java/org/lineageos/updater/UpdatesCheckReceiver.java
@@ -60,6 +60,7 @@ public class UpdatesCheckReceiver extends BroadcastReceiver {
}
Utils.cleanupDownloadsDir(context);
+ Utils.removeLocalUpdate(context);
// Reset resume or update check failed on reboot
editor.putBoolean(Constants.AUTO_UPDATE_CHECK_FAILED, false).apply();
diff --git a/app/src/main/java/org/lineageos/updater/controller/UpdaterService.java b/app/src/main/java/org/lineageos/updater/controller/UpdaterService.java
index 727bf7477ddec0a776b24cdf3bebaa461ea1628c..86a4ac59c179c817b3fcbf3bbc9905c3b7e17deb 100644
--- a/app/src/main/java/org/lineageos/updater/controller/UpdaterService.java
+++ b/app/src/main/java/org/lineageos/updater/controller/UpdaterService.java
@@ -87,6 +87,8 @@ public class UpdaterService extends Service {
private static ConnectivityManager.NetworkCallback mConnectionStateMonitor;
private static ConnectivityManager mConnectivityManager;
+ private static boolean mDeviceRebooted = true;
+
@Override
public void onCreate() {
super.onCreate();
@@ -255,6 +257,10 @@ public class UpdaterService extends Service {
return mUpdaterController;
}
+ public static boolean isDeviceRebooted() {
+ return mDeviceRebooted;
+ }
+
private void tryStopSelf() {
if (isNetworkCallBackActive || areNotificationsActive()) return;
if (!mHasClients && !mUpdaterController.hasActiveDownloads() &&
@@ -274,6 +280,8 @@ public class UpdaterService extends Service {
private void handleUpdateStatusChange(UpdateInfo update) {
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = pref.edit();
+ mNotificationBuilder.setPriority(NotificationCompat.PRIORITY_DEFAULT);
+ mDeviceRebooted = false;
switch (update.getStatus()) {
case DELETED: {
notifySystemUpdaterService(STATUS_WAITING_DOWNLOAD, update);
@@ -481,6 +489,7 @@ public class UpdaterService extends Service {
mNotificationBuilder.setTicker(text);
mNotificationBuilder.setOngoing(true);
mNotificationBuilder.setAutoCancel(false);
+ mNotificationBuilder.setPriority(NotificationCompat.PRIORITY_MAX);
mNotificationManager.notify(NOTIFICATION_ID, mNotificationBuilder.build());
boolean deleteUpdate = pref.getBoolean(Constants.PREF_AUTO_DELETE_UPDATES, true);
diff --git a/app/src/main/java/org/lineageos/updater/misc/Utils.java b/app/src/main/java/org/lineageos/updater/misc/Utils.java
index d8c8a0268b7353308aabd8a8d9f22b120ba0bcca..67be73473382345db370bb1bf6fd489f22d195b6 100644
--- a/app/src/main/java/org/lineageos/updater/misc/Utils.java
+++ b/app/src/main/java/org/lineageos/updater/misc/Utils.java
@@ -41,6 +41,7 @@ import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.lineageos.updater.R;
+import org.lineageos.updater.UpdateImporter;
import org.lineageos.updater.UpdatesDbHelper;
import org.lineageos.updater.controller.UpdaterController;
import org.lineageos.updater.controller.UpdaterService;
@@ -414,6 +415,14 @@ public class Utils {
}
}
+ public static void removeLocalUpdate(Context context) {
+ File downloadPath = getDownloadPath(context);
+ File localUpdate = new File(downloadPath, UpdateImporter.FILE_NAME);
+ if (localUpdate.exists()) {
+ Log.d(TAG, "Deleting local update: " + localUpdate.delete());
+ }
+ }
+
/**
* Cleanup the download directory, which is assumed to be a privileged location
* the user can't access and that might have stale files. This can happen if
@@ -476,9 +485,11 @@ public class Utils {
public static void removeInstalledUpdate(Context context) {
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
String downloadId = pref.getString(Constants.PREF_NEEDS_DELETE_ID, null);
- UpdaterController controller = UpdaterController.getInstance(context);
- if (controller != null && downloadId != null) {
- controller.deleteUpdate(downloadId);
+ if (downloadId != null) {
+ UpdaterController controller = UpdaterController.getInstance(context);
+ if (controller != null) {
+ controller.deleteUpdate(downloadId);
+ }
pref.edit().remove(Constants.PREF_NEEDS_DELETE_ID).apply();
}
}
diff --git a/app/src/main/res/layout/activity_updates.xml b/app/src/main/res/layout/activity_updates.xml
index 0661526925ed62a4ca27a9d6b3a4fd908b73754b..bf1865865d221d531d2aaecf8c0ebac96a37c925 100644
--- a/app/src/main/res/layout/activity_updates.xml
+++ b/app/src/main/res/layout/activity_updates.xml
@@ -145,6 +145,7 @@
android:paddingStart="16dp"
android:textSize="16sp"
android:background="@color/toolbar_collapsed"
+ android:visibility="gone"
android:text="@string/e_available_updates"
android:textColor="?android:textColorPrimary" />
diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml
index ab9e67ef2a677901f9b4618e9182a4a376282e2c..c8d2ac2958c928da91930db3dc1e928e52061b0d 100644
--- a/app/src/main/res/values-el/strings.xml
+++ b/app/src/main/res/values-el/strings.xml
@@ -28,6 +28,12 @@
Προκαταρκτική προετοιμασία ενημέρωσης
Χαμηλή μπαταρία
Η στάθμη της μπαταρίας είναι πολύ χαμηλή, χρειάζεστε τουλάχιστον %1$d%% της μπαταρίας για να συνεχίσετε ή %2$d%% κατά την φόρτιση.
+
+ Αδυναμία εγκατάστασης ενημέρωσης με το OverlayFS προσαρτημένο
Επανεκκίνηση
Ανανέωση
Προτιμήσεις
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index e7fa96c3832b2fac9a5a611aa337286be7be7bbb..f8a45e1a9a8dadfcba2e1b7f20b34f82fae6fc25 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -69,7 +69,7 @@
Pobierz
Wstrzymaj
Wznów
- Instaluj
+ Zainstaluj
Informacje
Usuń
Anuluj
@@ -121,6 +121,6 @@
Importowanie aktualizacji lokalnej\u2026
Zaimportowano %1$s. Czy chcesz to zainstalować?
Nie udało się zaimportować aktualizacji lokalnej
- Instaluj
+ Zainstaluj
Aktualizacja lokalna