X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/d19128e770443fac3e134e46dbb88a3b29070fd3..c6124920d1137c8f53fdd3560e8e1070ea28f0ca:/src/com/owncloud/android/datamodel/FileDataStorageManager.java diff --git a/src/com/owncloud/android/datamodel/FileDataStorageManager.java b/src/com/owncloud/android/datamodel/FileDataStorageManager.java index 900d59cf..816c676a 100644 --- a/src/com/owncloud/android/datamodel/FileDataStorageManager.java +++ b/src/com/owncloud/android/datamodel/FileDataStorageManager.java @@ -494,7 +494,7 @@ public class FileDataStorageManager { if (removeLocalCopy && file.isDown() && localPath != null && success) { success = new File(localPath).delete(); if (success) { - deleteFileInMediaScan(file); + deleteFileInMediaScan(localPath); } if (!removeDBData && success) { // maybe unnecessary, but should be checked TODO remove if unnecessary @@ -556,7 +556,8 @@ public class FileDataStorageManager { File localFile = new File(file.getStoragePath()); success &= localFile.delete(); if (success) { - deleteFileInMediaScan(file); // notify MediaScanner about removed file + // notify MediaScanner about removed file + deleteFileInMediaScan(file.getStoragePath()); file.setStoragePath(null); saveFile(file); } @@ -716,13 +717,11 @@ public class FileDataStorageManager { Iterator it = originalPathsToTriggerMediaScan.iterator(); while (it.hasNext()) { // Notify MediaScanner about removed file - deleteFileInMediaScan(file); - triggerMediaScan(it.next()); + deleteFileInMediaScan(it.next()); } it = newPathsToTriggerMediaScan.iterator(); while (it.hasNext()) { // Notify MediaScanner about new file/folder - deleteFileInMediaScan(file); triggerMediaScan(it.next()); } } @@ -1500,22 +1499,46 @@ public class FileDataStorageManager { MainApp.getAppContext().sendBroadcast(intent); } - 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}); + public void deleteFileInMediaScan(String path) { + + String mimetypeString = FileStorageUtils.getMimeTypeFromName(path); + ContentResolver contentResolver = getContentResolver(); + + if (contentResolver != null) { + if (mimetypeString.startsWith("image/")) { + // Images + contentResolver.delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, + MediaStore.Images.Media.DATA + "=?", new String[]{path}); + } else if (mimetypeString.startsWith("audio/")) { + // Audio + contentResolver.delete(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, + MediaStore.Audio.Media.DATA + "=?", new String[]{path}); + } else if (mimetypeString.startsWith("video/")) { + // Video + contentResolver.delete(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, + MediaStore.Video.Media.DATA + "=?", new String[]{path}); + } + } else { + ContentProviderClient contentProviderClient = getContentProviderClient(); + try { + if (mimetypeString.startsWith("image/")) { + // Images + contentProviderClient.delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, + MediaStore.Images.Media.DATA + "=?", new String[]{path}); + } else if (mimetypeString.startsWith("audio/")) { + // Audio + contentProviderClient.delete(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, + MediaStore.Audio.Media.DATA + "=?", new String[]{path}); + } else if (mimetypeString.startsWith("video/")) { + // Video + contentProviderClient.delete(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, + MediaStore.Video.Media.DATA + "=?", new String[]{path}); + } + } catch (RemoteException e) { + Log_OC.e(TAG, "Exception deleting media file in MediaStore " + e.getMessage()); + } } + } }