diff --git a/app/src/main/java/com/amaze/filemanager/asynchronous/asynctasks/DeleteTask.java b/app/src/main/java/com/amaze/filemanager/asynchronous/asynctasks/DeleteTask.java index 4f83f4bd0a..3f32e46abe 100644 --- a/app/src/main/java/com/amaze/filemanager/asynchronous/asynctasks/DeleteTask.java +++ b/app/src/main/java/com/amaze/filemanager/asynchronous/asynctasks/DeleteTask.java @@ -38,6 +38,7 @@ import com.amaze.filemanager.filesystem.SafRootHolder; import com.amaze.filemanager.filesystem.cloud.CloudUtil; import com.amaze.filemanager.filesystem.files.CryptUtil; +import com.amaze.filemanager.filesystem.files.FileUtils; import com.amaze.filemanager.filesystem.files.MediaConnectionUtils; import com.amaze.filemanager.ui.activities.MainActivity; import com.amaze.filemanager.ui.fragments.CompressedExplorerFragment; @@ -113,10 +114,14 @@ protected final AsyncTaskResult doInBackground( } // delete file from media database - if (!file.isSmb() && !file.isSftp()) + if (!file.isSmb() && !file.isSftp()) { MediaConnectionUtils.scanFile( applicationContext, files.toArray(new HybridFile[files.size()])); + if (FileUtils.NOMEDIA_FILE.equals(file.getName())) + MediaConnectionUtils.scanFile(applicationContext, file.getParent(applicationContext)); + } + // delete file entry from encrypted database if (file.getName(applicationContext).endsWith(CryptUtil.CRYPT_EXTENSION)) { CryptHandler handler = CryptHandler.INSTANCE; diff --git a/app/src/main/java/com/amaze/filemanager/asynchronous/asynctasks/movecopy/PreparePasteTask.kt b/app/src/main/java/com/amaze/filemanager/asynchronous/asynctasks/movecopy/PreparePasteTask.kt index e8e353194f..7ee9cb13cb 100644 --- a/app/src/main/java/com/amaze/filemanager/asynchronous/asynctasks/movecopy/PreparePasteTask.kt +++ b/app/src/main/java/com/amaze/filemanager/asynchronous/asynctasks/movecopy/PreparePasteTask.kt @@ -21,6 +21,7 @@ package com.amaze.filemanager.asynchronous.asynctasks.movecopy import android.app.ProgressDialog +import android.content.Context import android.content.Intent import android.view.LayoutInflater import android.widget.Toast @@ -43,6 +44,7 @@ import com.amaze.filemanager.filesystem.HybridFile import com.amaze.filemanager.filesystem.HybridFileParcelable import com.amaze.filemanager.filesystem.MakeDirectoryOperation import com.amaze.filemanager.filesystem.files.FileUtils +import com.amaze.filemanager.filesystem.files.MediaConnectionUtils import com.amaze.filemanager.ui.activities.MainActivity import com.amaze.filemanager.utils.OnFileFound import com.amaze.filemanager.utils.Utils @@ -140,6 +142,7 @@ class PreparePasteTask(strongRefMain: MainActivity) { filesToCopy[0].getParent(context.get()) == targetPath ) { Toast.makeText(context.get(), R.string.same_dir_move_error, Toast.LENGTH_SHORT).show() + MediaConnectionUtils.scanFile(context.get() as Context, filesToCopy.toTypedArray()) return } diff --git a/app/src/main/java/com/amaze/filemanager/filesystem/Operations.java b/app/src/main/java/com/amaze/filemanager/filesystem/Operations.java index 02d46eb5ec..306eaaf3c7 100644 --- a/app/src/main/java/com/amaze/filemanager/filesystem/Operations.java +++ b/app/src/main/java/com/amaze/filemanager/filesystem/Operations.java @@ -442,6 +442,17 @@ protected Void doInBackground(Void... params) { } return null; } + + @Override + protected void onPostExecute(Void unused) { + super.onPostExecute(unused); + + // TODO: run this only when the operation gets completed successfully + MediaConnectionUtils.scanFile(context, file.path); + + if (file.name.equals(FileUtils.NOMEDIA_FILE)) + MediaConnectionUtils.scanFile(context, file.getParent(context)); + } }.executeOnExecutor(executor); } diff --git a/app/src/main/java/com/amaze/filemanager/filesystem/files/MediaConnectionUtils.kt b/app/src/main/java/com/amaze/filemanager/filesystem/files/MediaConnectionUtils.kt index e51370578c..1c982a04e3 100644 --- a/app/src/main/java/com/amaze/filemanager/filesystem/files/MediaConnectionUtils.kt +++ b/app/src/main/java/com/amaze/filemanager/filesystem/files/MediaConnectionUtils.kt @@ -52,4 +52,24 @@ object MediaConnectionUtils { LOG.info("MediaConnectionUtils#scanFile finished scanning path$path") } } + + /** + * Invokes MediaScannerConnection#scanFile for a given file + * + * @param context the context + * @param filePath the path of the file to be scanned + */ + @JvmStatic + fun scanFile( + context: Context, + filePath: String, + ) { + MediaScannerConnection.scanFile( + context, + arrayOf(filePath), + null, + ) { path: String, _: Uri? -> + LOG.info("MediaConnectionUtils#scanFile finished scanning path$path") + } + } }