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