From a69c04d8e938b67f1a44a72b9148b907ebd7b256 Mon Sep 17 00:00:00 2001 From: masensio Date: Tue, 27 Jan 2015 14:31:44 +0100 Subject: [PATCH] Fix bug: audio are not refreshed when delete them from the app --- .../datamodel/FileDataStorageManager.java | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/src/com/owncloud/android/datamodel/FileDataStorageManager.java b/src/com/owncloud/android/datamodel/FileDataStorageManager.java index ff43d1ebdb..b73845af25 100644 --- a/src/com/owncloud/android/datamodel/FileDataStorageManager.java +++ b/src/com/owncloud/android/datamodel/FileDataStorageManager.java @@ -492,7 +492,7 @@ public class FileDataStorageManager { if (removeLocalCopy && file.isDown() && localPath != null && success) { success = new File(localPath).delete(); if (success) { - deleteFileInMediaScan(localPath); + deleteFileInMediaScan(file); } if (!removeDBData && success) { // maybe unnecessary, but should be checked TODO remove if unnecessary @@ -554,14 +554,13 @@ public class FileDataStorageManager { File localFile = new File(file.getStoragePath()); success &= localFile.delete(); if (success) { - deleteFileInMediaScan(file.getStoragePath()); // notify MediaScanner about removed file + deleteFileInMediaScan(file); // notify MediaScanner about removed file file.setStoragePath(null); saveFile(file); } } } } - //triggerMediaScan(localFolderPath); // notify MediaScanner about removed file in folder } // stage 2: remove the folder itself and any local file inside out of sync; @@ -581,8 +580,6 @@ public class FileDataStorageManager { } else { String path = localFile.getAbsolutePath(); success &= localFile.delete(); - deleteFileInMediaScan(path); // notify MediaScanner about removed file - //triggerMediaScan(path); // notify MediaScanner about removed file } } } @@ -717,13 +714,13 @@ public class FileDataStorageManager { Iterator it = originalPathsToTriggerMediaScan.iterator(); while (it.hasNext()) { // Notify MediaScanner about removed file - deleteFileInMediaScan(file.getStoragePath()); + deleteFileInMediaScan(file); triggerMediaScan(it.next()); } it = newPathsToTriggerMediaScan.iterator(); while (it.hasNext()) { // Notify MediaScanner about new file/folder - deleteFileInMediaScan(file.getStoragePath()); + deleteFileInMediaScan(file); triggerMediaScan(it.next()); } } @@ -1495,9 +1492,22 @@ public class FileDataStorageManager { MainApp.getAppContext().sendBroadcast(intent); } - public void deleteFileInMediaScan(String path) { - getContentResolver().delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, - MediaStore.Images.Media.DATA + "=?", new String[]{path}); + public void deleteFileInMediaScan(OCFile file) { + + String path = file.getStoragePath(); + if (file.isImage()) { + // Images + getContentResolver().delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, + MediaStore.Images.Media.DATA + "=?", new String[]{path}); + } else if (file.isAudio()) { + // Audio + getContentResolver().delete(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, + MediaStore.Audio.Media.DATA + "=?", new String[]{path}); + } else if (file.isVideo()) { + // Video + getContentResolver().delete(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, + MediaStore.Video.Media.DATA + "=?", new String[]{path}); + } } }