diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml
index 92563f917417..3ccc2b232c94 100644
--- a/src/main/AndroidManifest.xml
+++ b/src/main/AndroidManifest.xml
@@ -60,7 +60,6 @@
-
diff --git a/src/main/java/com/nextcloud/client/di/AppModule.java b/src/main/java/com/nextcloud/client/di/AppModule.java
index 2280e890c5a3..4cf734a78bb1 100644
--- a/src/main/java/com/nextcloud/client/di/AppModule.java
+++ b/src/main/java/com/nextcloud/client/di/AppModule.java
@@ -68,6 +68,7 @@
import javax.inject.Named;
import javax.inject.Singleton;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import dagger.Module;
import dagger.Provides;
@@ -217,4 +218,9 @@ MigrationsManager migrationsManager(MigrationsDb migrationsDb,
AppNotificationManager notificationsManager(Context context, NotificationManager platformNotificationsManager) {
return new AppNotificationManagerImpl(context, context.getResources(), platformNotificationsManager);
}
+
+ @Provides
+ LocalBroadcastManager localBroadcastManager(Context context) {
+ return LocalBroadcastManager.getInstance(context);
+ }
}
diff --git a/src/main/java/com/owncloud/android/files/services/FileDownloader.java b/src/main/java/com/owncloud/android/files/services/FileDownloader.java
index bcc22c83d7d9..106688dbffe8 100644
--- a/src/main/java/com/owncloud/android/files/services/FileDownloader.java
+++ b/src/main/java/com/owncloud/android/files/services/FileDownloader.java
@@ -76,6 +76,7 @@
import javax.inject.Inject;
import androidx.core.app.NotificationCompat;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import dagger.android.AndroidInjection;
public class FileDownloader extends Service
@@ -117,6 +118,7 @@ public class FileDownloader extends Service
@Inject UserAccountManager accountManager;
@Inject UploadsStorageManager uploadsStorageManager;
+ @Inject LocalBroadcastManager localBroadcastManager;
public static String getDownloadAddedMessage() {
return FileDownloader.class.getName() + DOWNLOAD_ADDED_MESSAGE;
@@ -691,7 +693,7 @@ private void sendBroadcastDownloadFinished(
end.putExtra(EXTRA_LINKED_TO_PATH, unlinkedFromRemotePath);
}
end.setPackage(getPackageName());
- sendStickyBroadcast(end);
+ localBroadcastManager.sendBroadcast(end);
}
@@ -708,7 +710,7 @@ private void sendBroadcastNewDownload(DownloadFileOperation download,
added.putExtra(EXTRA_REMOTE_PATH, download.getRemotePath());
added.putExtra(EXTRA_LINKED_TO_PATH, linkedToRemotePath);
added.setPackage(getPackageName());
- sendStickyBroadcast(added);
+ localBroadcastManager.sendBroadcast(added);
}
/**
diff --git a/src/main/java/com/owncloud/android/files/services/FileUploader.java b/src/main/java/com/owncloud/android/files/services/FileUploader.java
index 2c75a3dc78a2..f4f961fc289b 100644
--- a/src/main/java/com/owncloud/android/files/services/FileUploader.java
+++ b/src/main/java/com/owncloud/android/files/services/FileUploader.java
@@ -90,6 +90,7 @@
import androidx.annotation.NonNull;
import androidx.core.app.NotificationCompat;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import dagger.android.AndroidInjection;
/**
@@ -184,6 +185,7 @@ public class FileUploader extends Service
@Inject UploadsStorageManager mUploadsStorageManager;
@Inject ConnectivityService connectivityService;
@Inject PowerManagementService powerManagementService;
+ @Inject LocalBroadcastManager localBroadcastManager;
private IndexedForest mPendingUploads = new IndexedForest<>();
@@ -823,7 +825,7 @@ private void sendBroadcastUploadsAdded() {
Intent start = new Intent(getUploadsAddedMessage());
// nothing else needed right now
start.setPackage(getPackageName());
- sendStickyBroadcast(start);
+ localBroadcastManager.sendBroadcast(start);
}
/**
@@ -840,7 +842,7 @@ private void sendBroadcastUploadStarted(UploadFileOperation upload) {
start.putExtra(ACCOUNT_NAME, upload.getAccount().name);
start.setPackage(getPackageName());
- sendStickyBroadcast(start);
+ localBroadcastManager.sendBroadcast(start);
}
/**
@@ -873,7 +875,7 @@ private void sendBroadcastUploadFinished(
end.putExtra(EXTRA_LINKED_TO_PATH, unlinkedFromRemotePath);
}
end.setPackage(getPackageName());
- sendStickyBroadcast(end);
+ localBroadcastManager.sendBroadcast(end);
}
/**
diff --git a/src/main/java/com/owncloud/android/operations/RefreshFolderOperation.java b/src/main/java/com/owncloud/android/operations/RefreshFolderOperation.java
index 7e2ee6c8f68e..89d32aac5be7 100644
--- a/src/main/java/com/owncloud/android/operations/RefreshFolderOperation.java
+++ b/src/main/java/com/owncloud/android/operations/RefreshFolderOperation.java
@@ -57,6 +57,7 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import static com.owncloud.android.datamodel.OCFile.PATH_SEPARATOR;
@@ -691,6 +692,6 @@ private void sendLocalBroadcast(String event, String dirRemotePath, RemoteOperat
intent.putExtra(FileSyncAdapter.EXTRA_RESULT, dataHolderItemId);
intent.setPackage(mContext.getPackageName());
- mContext.sendStickyBroadcast(intent);
+ LocalBroadcastManager.getInstance(mContext.getApplicationContext()).sendBroadcast(intent);
}
}
diff --git a/src/main/java/com/owncloud/android/services/SyncFolderHandler.java b/src/main/java/com/owncloud/android/services/SyncFolderHandler.java
index 9b9853d49470..21cbc0b278dd 100644
--- a/src/main/java/com/owncloud/android/services/SyncFolderHandler.java
+++ b/src/main/java/com/owncloud/android/services/SyncFolderHandler.java
@@ -41,6 +41,8 @@
import java.io.IOException;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
/**
* SyncFolder worker. Performs the pending operations in the order they were requested.
*
@@ -177,7 +179,7 @@ private void sendBroadcastNewSyncFolder(Account account, String remotePath) {
added.putExtra(FileDownloader.ACCOUNT_NAME, account.name);
added.putExtra(FileDownloader.EXTRA_REMOTE_PATH, remotePath);
added.setPackage(mService.getPackageName());
- mService.sendStickyBroadcast(added);
+ LocalBroadcastManager.getInstance(mService.getApplicationContext()).sendBroadcast(added);
}
/**
@@ -191,6 +193,6 @@ private void sendBroadcastFinishedSyncFolder(Account account, String remotePath,
finished.putExtra(FileDownloader.EXTRA_REMOTE_PATH, remotePath);
finished.putExtra(FileDownloader.EXTRA_DOWNLOAD_RESULT, success);
finished.setPackage(mService.getPackageName());
- mService.sendStickyBroadcast(finished);
+ LocalBroadcastManager.getInstance(mService.getApplicationContext()).sendBroadcast(finished);
}
}
diff --git a/src/main/java/com/owncloud/android/syncadapter/FileSyncAdapter.java b/src/main/java/com/owncloud/android/syncadapter/FileSyncAdapter.java
index a351b3a64912..0258fdf14e6b 100644
--- a/src/main/java/com/owncloud/android/syncadapter/FileSyncAdapter.java
+++ b/src/main/java/com/owncloud/android/syncadapter/FileSyncAdapter.java
@@ -59,6 +59,7 @@
import androidx.annotation.PluralsRes;
import androidx.core.app.NotificationCompat;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
/**
* Implementation of {@link AbstractThreadedSyncAdapter} responsible for synchronizing
@@ -379,8 +380,7 @@ private void sendLocalBroadcast(String event, String dirRemotePath,
}
intent.setPackage(getContext().getPackageName());
- getContext().sendStickyBroadcast(intent);
- //LocalBroadcastManager.getInstance(getContext()).sendBroadcast(intent);
+ LocalBroadcastManager.getInstance(getContext()).sendBroadcast(intent);
}
diff --git a/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java
index a83f32783c73..bb5518af749d 100644
--- a/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java
+++ b/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java
@@ -137,6 +137,7 @@
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import static com.owncloud.android.datamodel.OCFile.PATH_SEPARATOR;
@@ -159,6 +160,7 @@ public class FileDisplayActivity extends FileActivity
private UploadFinishReceiver mUploadFinishReceiver;
private DownloadFinishReceiver mDownloadFinishReceiver;
private RemoteOperationResult mLastSslUntrustedServerResult;
+ @Inject LocalBroadcastManager localBroadcastManager;
private boolean mDualPane;
@@ -1119,19 +1121,19 @@ protected void onResume() {
syncIntentFilter.addAction(RefreshFolderOperation.EVENT_SINGLE_FOLDER_CONTENTS_SYNCED);
syncIntentFilter.addAction(RefreshFolderOperation.EVENT_SINGLE_FOLDER_SHARES_SYNCED);
mSyncBroadcastReceiver = new SyncBroadcastReceiver();
- registerReceiver(mSyncBroadcastReceiver, syncIntentFilter);
+ localBroadcastManager.registerReceiver(mSyncBroadcastReceiver, syncIntentFilter);
}
// Listen for upload messages
IntentFilter uploadIntentFilter = new IntentFilter(FileUploader.getUploadFinishMessage());
mUploadFinishReceiver = new UploadFinishReceiver();
- registerReceiver(mUploadFinishReceiver, uploadIntentFilter);
+ localBroadcastManager.registerReceiver(mUploadFinishReceiver, uploadIntentFilter);
// Listen for download messages
IntentFilter downloadIntentFilter = new IntentFilter(FileDownloader.getDownloadAddedMessage());
downloadIntentFilter.addAction(FileDownloader.getDownloadFinishMessage());
mDownloadFinishReceiver = new DownloadFinishReceiver();
- registerReceiver(mDownloadFinishReceiver, downloadIntentFilter);
+ localBroadcastManager.registerReceiver(mDownloadFinishReceiver, downloadIntentFilter);
// setup drawer
menuItemId = getIntent().getIntExtra(FileDisplayActivity.DRAWER_MENU_ID, menuItemId);
@@ -1165,16 +1167,15 @@ protected void onResume() {
protected void onPause() {
Log_OC.v(TAG, "onPause() start");
if (mSyncBroadcastReceiver != null) {
- unregisterReceiver(mSyncBroadcastReceiver);
- //LocalBroadcastManager.getInstance(this).unregisterReceiver(mSyncBroadcastReceiver);
+ localBroadcastManager.unregisterReceiver(mSyncBroadcastReceiver);
mSyncBroadcastReceiver = null;
}
if (mUploadFinishReceiver != null) {
- unregisterReceiver(mUploadFinishReceiver);
+ localBroadcastManager.unregisterReceiver(mUploadFinishReceiver);
mUploadFinishReceiver = null;
}
if (mDownloadFinishReceiver != null) {
- unregisterReceiver(mDownloadFinishReceiver);
+ localBroadcastManager.unregisterReceiver(mDownloadFinishReceiver);
mDownloadFinishReceiver = null;
}
@@ -1289,7 +1290,6 @@ public void onReceive(Context context, Intent intent) {
}
}
}
- removeStickyBroadcast(intent);
DataHolderUtil.getInstance().delete(intent.getStringExtra(FileSyncAdapter.EXTRA_RESULT));
Log_OC.d(TAG, "Setting progress visibility to " + mSyncInProgress);
@@ -1308,7 +1308,6 @@ public void onReceive(Context context, Intent intent) {
} catch (RuntimeException e) {
// avoid app crashes after changing the serial id of RemoteOperationResult
// in owncloud library with broadcast notifications pending to process
- removeStickyBroadcast(intent);
try {
DataHolderUtil.getInstance().delete(intent.getStringExtra(FileSyncAdapter.EXTRA_RESULT));
@@ -1362,74 +1361,67 @@ private class UploadFinishReceiver extends BroadcastReceiver {
*/
@Override
public void onReceive(Context context, Intent intent) {
- try {
- String uploadedRemotePath = intent.getStringExtra(FileUploader.EXTRA_REMOTE_PATH);
- String accountName = intent.getStringExtra(FileUploader.ACCOUNT_NAME);
- boolean sameAccount = getAccount() != null && accountName.equals(getAccount().name);
- OCFile currentDir = getCurrentDir();
- boolean isDescendant = currentDir != null && uploadedRemotePath != null &&
- uploadedRemotePath.startsWith(currentDir.getRemotePath());
-
- if (sameAccount && isDescendant) {
- String linkedToRemotePath =
- intent.getStringExtra(FileUploader.EXTRA_LINKED_TO_PATH);
- if (linkedToRemotePath == null || isAscendant(linkedToRemotePath)) {
- updateListOfFilesFragment(false);
- }
+ String uploadedRemotePath = intent.getStringExtra(FileUploader.EXTRA_REMOTE_PATH);
+ String accountName = intent.getStringExtra(FileUploader.ACCOUNT_NAME);
+ boolean sameAccount = getAccount() != null && accountName.equals(getAccount().name);
+ OCFile currentDir = getCurrentDir();
+ boolean isDescendant = currentDir != null && uploadedRemotePath != null &&
+ uploadedRemotePath.startsWith(currentDir.getRemotePath());
+
+ if (sameAccount && isDescendant) {
+ String linkedToRemotePath =
+ intent.getStringExtra(FileUploader.EXTRA_LINKED_TO_PATH);
+ if (linkedToRemotePath == null || isAscendant(linkedToRemotePath)) {
+ updateListOfFilesFragment(false);
}
+ }
- boolean uploadWasFine = intent.getBooleanExtra(
- FileUploader.EXTRA_UPLOAD_RESULT,
- false);
- boolean renamedInUpload = getFile().getRemotePath().
- equals(intent.getStringExtra(FileUploader.EXTRA_OLD_REMOTE_PATH));
-
- boolean sameFile = getFile().getRemotePath().equals(uploadedRemotePath) ||
- renamedInUpload;
- FileFragment details = getSecondFragment();
+ boolean uploadWasFine = intent.getBooleanExtra(
+ FileUploader.EXTRA_UPLOAD_RESULT,
+ false);
+ boolean renamedInUpload = getFile().getRemotePath().
+ equals(intent.getStringExtra(FileUploader.EXTRA_OLD_REMOTE_PATH));
- if (sameAccount && sameFile && details instanceof FileDetailFragment) {
- if (uploadWasFine) {
- setFile(getStorageManager().getFileByPath(uploadedRemotePath));
- } else {
- //TODO remove upload progress bar after upload failed.
- Log_OC.d(TAG, "Remove upload progress bar after upload failed");
- }
- if (renamedInUpload) {
- String newName = new File(uploadedRemotePath).getName();
- DisplayUtils.showSnackMessage(
- getActivity(),
- R.string.filedetails_renamed_in_upload_msg,
- newName
- );
- }
- if (uploadWasFine || getFile().fileExists()) {
- ((FileDetailFragment) details).updateFileDetails(false, true);
- } else {
- cleanSecondFragment();
- }
+ boolean sameFile = getFile().getRemotePath().equals(uploadedRemotePath) ||
+ renamedInUpload;
+ FileFragment details = getSecondFragment();
- // Force the preview if the file is an image or text file
- if (uploadWasFine) {
- OCFile ocFile = getFile();
- if (PreviewImageFragment.canBePreviewed(ocFile)) {
- startImagePreview(getFile(), true);
- } else if (PreviewTextFileFragment.canBePreviewed(ocFile)) {
- startTextPreview(ocFile, true);
- }
- // TODO what about other kind of previews?
- }
+ if (sameAccount && sameFile && details instanceof FileDetailFragment) {
+ if (uploadWasFine) {
+ setFile(getStorageManager().getFileByPath(uploadedRemotePath));
+ } else {
+ //TODO remove upload progress bar after upload failed.
+ Log_OC.d(TAG, "Remove upload progress bar after upload failed");
}
- OCFileListFragment ocFileListFragment = getListOfFilesFragment();
- if (ocFileListFragment != null) {
- ocFileListFragment.setLoading(false);
+ if (renamedInUpload) {
+ String newName = new File(uploadedRemotePath).getName();
+ DisplayUtils.showSnackMessage(
+ getActivity(),
+ R.string.filedetails_renamed_in_upload_msg,
+ newName
+ );
}
- } finally {
- if (intent != null) {
- removeStickyBroadcast(intent);
+ if (uploadWasFine || getFile().fileExists()) {
+ ((FileDetailFragment) details).updateFileDetails(false, true);
+ } else {
+ cleanSecondFragment();
}
- }
+ // Force the preview if the file is an image or text file
+ if (uploadWasFine) {
+ OCFile ocFile = getFile();
+ if (PreviewImageFragment.canBePreviewed(ocFile)) {
+ startImagePreview(getFile(), true);
+ } else if (PreviewTextFileFragment.canBePreviewed(ocFile)) {
+ startTextPreview(ocFile, true);
+ }
+ // TODO what about other kind of previews?
+ }
+ }
+ OCFileListFragment ocFileListFragment = getListOfFilesFragment();
+ if (ocFileListFragment != null) {
+ ocFileListFragment.setLoading(false);
+ }
}
// TODO refactor this receiver, and maybe DownloadFinishReceiver; this method is duplicated :S
@@ -1450,11 +1442,10 @@ private class DownloadFinishReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
- try {
- boolean sameAccount = isSameAccount(intent);
- String downloadedRemotePath = intent.getStringExtra(FileDownloader.EXTRA_REMOTE_PATH);
- String downloadBehaviour = intent.getStringExtra(OCFileListFragment.DOWNLOAD_BEHAVIOUR);
- boolean isDescendant = isDescendant(downloadedRemotePath);
+ boolean sameAccount = isSameAccount(intent);
+ String downloadedRemotePath = intent.getStringExtra(FileDownloader.EXTRA_REMOTE_PATH);
+ String downloadBehaviour = intent.getStringExtra(OCFileListFragment.DOWNLOAD_BEHAVIOUR);
+ boolean isDescendant = isDescendant(downloadedRemotePath);
if (sameAccount && isDescendant) {
String linkedToRemotePath = intent.getStringExtra(FileDownloader.EXTRA_LINKED_TO_PATH);
@@ -1467,28 +1458,22 @@ public void onReceive(Context context, Intent intent) {
intent.getBooleanExtra(FileDownloader.EXTRA_DOWNLOAD_RESULT, false));
}
- if (mWaitingToSend != null) {
- // update file after downloading
- mWaitingToSend = getStorageManager().getFileByRemoteId(mWaitingToSend.getRemoteId());
- if (mWaitingToSend != null && mWaitingToSend.isDown() && downloadBehaviour != null) {
- switch (downloadBehaviour) {
- case OCFileListFragment.DOWNLOAD_SEND:
- String packageName = intent.getStringExtra(SendShareDialog.PACKAGE_NAME);
- String activityName = intent.getStringExtra(SendShareDialog.ACTIVITY_NAME);
-
- sendDownloadedFile(packageName, activityName);
- break;
- default:
- // do nothing
- break;
- }
+ if (mWaitingToSend != null) {
+ // update file after downloading
+ mWaitingToSend = getStorageManager().getFileByRemoteId(mWaitingToSend.getRemoteId());
+ if (mWaitingToSend != null && mWaitingToSend.isDown() && downloadBehaviour != null) {
+ switch (downloadBehaviour) {
+ case OCFileListFragment.DOWNLOAD_SEND:
+ String packageName = intent.getStringExtra(SendShareDialog.PACKAGE_NAME);
+ String activityName = intent.getStringExtra(SendShareDialog.ACTIVITY_NAME);
+
+ sendDownloadedFile(packageName, activityName);
+ break;
+ default:
+ // do nothing
+ break;
}
}
-
- } finally {
- if (intent != null) {
- removeStickyBroadcast(intent);
- }
}
}
diff --git a/src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.java b/src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.java
index b22e9252139c..d834188149af 100644
--- a/src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.java
+++ b/src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.java
@@ -38,7 +38,6 @@
import com.google.android.material.button.MaterialButton;
import com.nextcloud.client.di.Injectable;
-import com.nextcloud.client.preferences.AppPreferences;
import com.owncloud.android.R;
import com.owncloud.android.datamodel.FileDataStorageManager;
import com.owncloud.android.datamodel.OCFile;
@@ -67,6 +66,7 @@
import androidx.appcompat.app.ActionBar;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
public class FolderPickerActivity extends FileActivity implements FileFragment.ContainerActivity,
OnClickListener,
@@ -96,7 +96,7 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C
protected MaterialButton mCancelBtn;
protected MaterialButton mChooseBtn;
private String caption;
- @Inject AppPreferences preferences;
+ @Inject LocalBroadcastManager localBroadcastManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -278,7 +278,7 @@ protected void onResume() {
syncIntentFilter.addAction(RefreshFolderOperation.EVENT_SINGLE_FOLDER_CONTENTS_SYNCED);
syncIntentFilter.addAction(RefreshFolderOperation.EVENT_SINGLE_FOLDER_SHARES_SYNCED);
mSyncBroadcastReceiver = new SyncBroadcastReceiver();
- registerReceiver(mSyncBroadcastReceiver, syncIntentFilter);
+ localBroadcastManager.registerReceiver(mSyncBroadcastReceiver, syncIntentFilter);
Log_OC.d(TAG, "onResume() end");
}
@@ -287,8 +287,7 @@ protected void onResume() {
protected void onPause() {
Log_OC.e(TAG, "onPause() start");
if (mSyncBroadcastReceiver != null) {
- unregisterReceiver(mSyncBroadcastReceiver);
- //LocalBroadcastManager.getInstance(this).unregisterReceiver(mSyncBroadcastReceiver);
+ localBroadcastManager.unregisterReceiver(mSyncBroadcastReceiver);
mSyncBroadcastReceiver = null;
}
@@ -532,7 +531,6 @@ public void onReceive(Context context, Intent intent) {
}
}
- removeStickyBroadcast(intent);
DataHolderUtil.getInstance().delete(intent.getStringExtra(FileSyncAdapter.EXTRA_RESULT));
Log_OC.d(TAG, "Setting progress visibility to " + mSyncInProgress);
@@ -544,7 +542,6 @@ public void onReceive(Context context, Intent intent) {
} catch (RuntimeException e) {
// avoid app crashes after changing the serial id of RemoteOperationResult
// in owncloud library with broadcast notifications pending to process
- removeStickyBroadcast(intent);
DataHolderUtil.getInstance().delete(intent.getStringExtra(FileSyncAdapter.EXTRA_RESULT));
}
}
diff --git a/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java b/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java
index 1459dde6639b..09327e08065b 100755
--- a/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java
+++ b/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java
@@ -120,6 +120,7 @@
import androidx.core.view.MenuItemCompat;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.FragmentManager;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import static com.owncloud.android.utils.DisplayUtils.openSortingOrderDialogFragment;
@@ -140,6 +141,7 @@ public class ReceiveExternalFilesActivity extends FileActivity
public static final int SINGLE_PARENT = 1;
@Inject AppPreferences preferences;
+ @Inject LocalBroadcastManager localBroadcastManager;
private AccountManager mAccountManager;
private Stack mParents = new Stack<>();
private List mStreamsToUpload;
@@ -189,7 +191,7 @@ protected void onCreate(Bundle savedInstanceState) {
EVENT_SINGLE_FOLDER_CONTENTS_SYNCED);
syncIntentFilter.addAction(RefreshFolderOperation.EVENT_SINGLE_FOLDER_SHARES_SYNCED);
mSyncBroadcastReceiver = new SyncBroadcastReceiver();
- registerReceiver(mSyncBroadcastReceiver, syncIntentFilter);
+ localBroadcastManager.registerReceiver(mSyncBroadcastReceiver, syncIntentFilter);
// Init Fragment without UI to retain AsyncTask across configuration changes
FragmentManager fm = getSupportFragmentManager();
@@ -266,7 +268,7 @@ protected void onSaveInstanceState(@NonNull Bundle outState) {
@Override
protected void onDestroy() {
if (mSyncBroadcastReceiver != null) {
- unregisterReceiver(mSyncBroadcastReceiver);
+ localBroadcastManager.unregisterReceiver(mSyncBroadcastReceiver);
}
super.onDestroy();
}
@@ -1151,14 +1153,12 @@ public void onReceive(Context context, Intent intent) {
}
}
}
- removeStickyBroadcast(intent);
Log_OC.d(TAG, "Setting progress visibility to " + mSyncInProgress);
}
} catch (RuntimeException e) {
// avoid app crashes after changing the serial id of RemoteOperationResult
// in owncloud library with broadcast notifications pending to process
- removeStickyBroadcast(intent);
DataHolderUtil.getInstance().delete(intent.getStringExtra(FileSyncAdapter.EXTRA_RESULT));
}
}
diff --git a/src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java b/src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java
index 9a5eae31175b..a27738a932a1 100755
--- a/src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java
+++ b/src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java
@@ -59,6 +59,7 @@
import javax.inject.Inject;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
@@ -95,6 +96,9 @@ public class UploadListActivity extends FileActivity {
@Inject
BackgroundJobManager backgroundJobManager;
+ @Inject
+ LocalBroadcastManager localBroadcastManager;
+
private UploadListLayoutBinding binding;
public static Intent createIntent(OCFile file, Account account, Integer flag, Context context) {
@@ -223,7 +227,7 @@ protected void onResume() {
uploadIntentFilter.addAction(FileUploader.getUploadsAddedMessage());
uploadIntentFilter.addAction(FileUploader.getUploadStartMessage());
uploadIntentFilter.addAction(FileUploader.getUploadFinishMessage());
- registerReceiver(uploadMessagesReceiver, uploadIntentFilter);
+ localBroadcastManager.registerReceiver(uploadMessagesReceiver, uploadIntentFilter);
Log_OC.v(TAG, "onResume() end");
@@ -233,7 +237,7 @@ protected void onResume() {
protected void onPause() {
Log_OC.v(TAG, "onPause() start");
if (uploadMessagesReceiver != null) {
- unregisterReceiver(uploadMessagesReceiver);
+ localBroadcastManager.unregisterReceiver(uploadMessagesReceiver);
uploadMessagesReceiver = null;
}
super.onPause();
@@ -355,14 +359,7 @@ private class UploadMessagesReceiver extends BroadcastReceiver {
*/
@Override
public void onReceive(Context context, Intent intent) {
- try {
- uploadListAdapter.loadUploadItemsFromDb();
- } finally {
- if (intent != null) {
- removeStickyBroadcast(intent);
- }
- }
-
+ uploadListAdapter.loadUploadItemsFromDb();
}
}
}
diff --git a/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactListFragment.java b/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactListFragment.java
index 68c399385908..e27477798ed0 100644
--- a/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactListFragment.java
+++ b/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactListFragment.java
@@ -58,10 +58,10 @@
import com.nextcloud.client.account.UserAccountManager;
import com.nextcloud.client.di.Injectable;
import com.nextcloud.client.files.downloader.Direction;
+import com.nextcloud.client.files.downloader.Request;
import com.nextcloud.client.files.downloader.Transfer;
-import com.nextcloud.client.files.downloader.TransferState;
import com.nextcloud.client.files.downloader.TransferManagerConnection;
-import com.nextcloud.client.files.downloader.Request;
+import com.nextcloud.client.files.downloader.TransferState;
import com.nextcloud.client.jobs.BackgroundJobManager;
import com.nextcloud.client.network.ClientFactory;
import com.owncloud.android.R;
diff --git a/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.java b/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.java
index f76a8d9f8cf8..efebe053b6f4 100644
--- a/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.java
+++ b/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.java
@@ -65,6 +65,7 @@
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.drawerlayout.widget.DrawerLayout;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import androidx.viewpager.widget.ViewPager;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
@@ -80,16 +81,9 @@ public class PreviewImageActivity extends FileActivity implements
Injectable {
public static final String TAG = PreviewImageActivity.class.getSimpleName();
+ public static final String EXTRA_VIRTUAL_TYPE = "EXTRA_VIRTUAL_TYPE";
private static final String KEY_WAITING_FOR_BINDER = "WAITING_FOR_BINDER";
private static final String KEY_SYSTEM_VISIBLE = "TRUE";
- public static final String EXTRA_VIRTUAL_TYPE = "EXTRA_VIRTUAL_TYPE";
-
- public static Intent previewFileIntent(Context context, User user, OCFile file) {
- final Intent intent = new Intent(context, PreviewImageActivity.class);
- intent.putExtra(FileActivity.EXTRA_FILE, file);
- intent.putExtra(FileActivity.EXTRA_ACCOUNT, user.toPlatformAccount());
- return intent;
- }
private ViewPager mViewPager;
private PreviewImagePagerAdapter mPreviewImagePagerAdapter;
@@ -99,6 +93,14 @@ public static Intent previewFileIntent(Context context, User user, OCFile file)
private DownloadFinishReceiver mDownloadFinishReceiver;
private View mFullScreenAnchorView;
@Inject AppPreferences preferences;
+ @Inject LocalBroadcastManager localBroadcastManager;
+
+ public static Intent previewFileIntent(Context context, User user, OCFile file) {
+ final Intent intent = new Intent(context, PreviewImageActivity.class);
+ intent.putExtra(FileActivity.EXTRA_FILE, file);
+ intent.putExtra(FileActivity.EXTRA_ACCOUNT, user.toPlatformAccount());
+ return intent;
+ }
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -107,7 +109,7 @@ protected void onCreate(Bundle savedInstanceState) {
final ActionBar actionBar = getSupportActionBar();
if (savedInstanceState != null && !savedInstanceState.getBoolean(KEY_SYSTEM_VISIBLE, true) &&
- actionBar != null) {
+ actionBar != null) {
actionBar.hide();
}
@@ -320,7 +322,7 @@ protected void onResume() {
IntentFilter filter = new IntentFilter(FileDownloader.getDownloadFinishMessage());
filter.addAction(FileDownloader.getDownloadAddedMessage());
- registerReceiver(mDownloadFinishReceiver, filter);
+ localBroadcastManager.registerReceiver(mDownloadFinishReceiver, filter);
}
@Override
@@ -331,7 +333,7 @@ protected void onPostResume() {
@Override
public void onPause() {
if (mDownloadFinishReceiver != null){
- unregisterReceiver(mDownloadFinishReceiver);
+ localBroadcastManager.unregisterReceiver(mDownloadFinishReceiver);
mDownloadFinishReceiver = null;
}
@@ -448,27 +450,22 @@ public void onReceive(Context context, Intent intent) {
OCFile file = getStorageManager().getFileByPath(downloadedRemotePath);
int position = mPreviewImagePagerAdapter.getFilePosition(file);
- boolean downloadWasFine = intent.getBooleanExtra(
- FileDownloader.EXTRA_DOWNLOAD_RESULT, false);
+ boolean downloadWasFine = intent.getBooleanExtra(FileDownloader.EXTRA_DOWNLOAD_RESULT, false);
//boolean isOffscreen = Math.abs((mViewPager.getCurrentItem() - position))
// <= mViewPager.getOffscreenPageLimit();
- if (position >= 0 &&
- intent.getAction().equals(FileDownloader.getDownloadFinishMessage())) {
+ if (position >= 0 && intent.getAction().equals(FileDownloader.getDownloadFinishMessage())) {
if (downloadWasFine) {
mPreviewImagePagerAdapter.updateFile(position, file);
} else {
mPreviewImagePagerAdapter.updateWithDownloadError(position);
}
- mPreviewImagePagerAdapter.notifyDataSetChanged(); // will trigger the creation
- // of new fragments
-
+ mPreviewImagePagerAdapter.notifyDataSetChanged(); // will trigger the creation of new fragments
} else {
Log_OC.d(TAG, "Download finished, but the fragment is offscreen");
}
}
- removeStickyBroadcast(intent);
}
}