From 87fe20d1c5fbb61c05c91f992fa46301a40214f1 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Tue, 21 May 2024 19:20:11 +0200 Subject: [PATCH] explicitly run backup in foreground service --- src/main/AndroidManifest.xml | 4 --- .../receiver/WorkManagerEventReceiver.java | 32 ------------------- .../worker/ExportBackupWorker.java | 23 ++++++------- 3 files changed, 10 insertions(+), 49 deletions(-) delete mode 100644 src/main/java/eu/siacs/conversations/receiver/WorkManagerEventReceiver.java diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index 749b593c607c4b4cdaa8f0e8e2cf4f9b9d2c4273..382f0ebd9a9ab39c92fa7a58bbaa16e20bb2873d 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -142,10 +142,6 @@ - - diff --git a/src/main/java/eu/siacs/conversations/receiver/WorkManagerEventReceiver.java b/src/main/java/eu/siacs/conversations/receiver/WorkManagerEventReceiver.java deleted file mode 100644 index 71ec74f53bf121ab981a37d8d4ae07a14245c19d..0000000000000000000000000000000000000000 --- a/src/main/java/eu/siacs/conversations/receiver/WorkManagerEventReceiver.java +++ /dev/null @@ -1,32 +0,0 @@ -package eu.siacs.conversations.receiver; - -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.util.Log; - -import androidx.work.WorkManager; - -import com.google.common.base.Strings; - -import eu.siacs.conversations.Config; -import eu.siacs.conversations.ui.fragment.settings.BackupSettingsFragment; - -public class WorkManagerEventReceiver extends BroadcastReceiver { - - public static final String ACTION_STOP_BACKUP = "eu.siacs.conversations.receiver.STOP_BACKUP"; - - @Override - public void onReceive(final Context context, final Intent intent) { - final var action = Strings.nullToEmpty(intent == null ? null : intent.getAction()); - if (action.equals(ACTION_STOP_BACKUP)) { - stopBackup(context); - } - } - - private void stopBackup(final Context context) { - Log.d(Config.LOGTAG, "trying to stop one-off backup worker"); - final var workManager = WorkManager.getInstance(context); - workManager.cancelUniqueWork(BackupSettingsFragment.CREATE_ONE_OFF_BACKUP); - } -} diff --git a/src/main/java/eu/siacs/conversations/worker/ExportBackupWorker.java b/src/main/java/eu/siacs/conversations/worker/ExportBackupWorker.java index 75ef9036c2fbf32bde15ca77f2cc9707813cc88e..02fc1632689a8c7be38b80e76b34d40e0a5d4b79 100644 --- a/src/main/java/eu/siacs/conversations/worker/ExportBackupWorker.java +++ b/src/main/java/eu/siacs/conversations/worker/ExportBackupWorker.java @@ -17,6 +17,7 @@ import android.util.Log; import androidx.annotation.NonNull; import androidx.core.app.NotificationCompat; import androidx.work.ForegroundInfo; +import androidx.work.WorkManager; import androidx.work.Worker; import androidx.work.WorkerParameters; @@ -33,7 +34,6 @@ import eu.siacs.conversations.entities.Conversation; import eu.siacs.conversations.entities.Message; import eu.siacs.conversations.persistance.DatabaseBackend; import eu.siacs.conversations.persistance.FileBackend; -import eu.siacs.conversations.receiver.WorkManagerEventReceiver; import eu.siacs.conversations.utils.BackupFileHeader; import eu.siacs.conversations.utils.Compatibility; @@ -95,6 +95,7 @@ public class ExportBackupWorker extends Worker { @NonNull @Override public Result doWork() { + setForegroundAsync(getForegroundInfo()); final List files; try { files = export(); @@ -223,18 +224,14 @@ public class ExportBackupWorker extends Worker { IV, salt); final var notification = getNotification(); - if (!recurringBackup) { - final var cancel = new Intent(context, WorkManagerEventReceiver.class); - cancel.setAction(WorkManagerEventReceiver.ACTION_STOP_BACKUP); - final var cancelPendingIntent = - PendingIntent.getBroadcast(context, 197, cancel, PENDING_INTENT_FLAGS); - notification.addAction( - new NotificationCompat.Action.Builder( - R.drawable.ic_cancel_24dp, - context.getString(R.string.cancel), - cancelPendingIntent) - .build()); - } + final var cancelPendingIntent = + WorkManager.getInstance(context).createCancelPendingIntent(getId()); + notification.addAction( + new NotificationCompat.Action.Builder( + R.drawable.ic_cancel_24dp, + context.getString(R.string.cancel), + cancelPendingIntent) + .build()); final Progress progress = new Progress(notification, max, count); final File directory = file.getParentFile(); if (directory != null && directory.mkdirs()) {