OSDN Git Service

CMFileManager : Delete from media store when renaming/deleting files
authorDanesh M <daneshm90@gmail.com>
Sat, 13 Dec 2014 03:26:21 +0000 (19:26 -0800)
committerDanesh Mondegarian <daneshm90@gmail.com>
Sun, 14 Dec 2014 20:12:28 +0000 (12:12 -0800)
Change-Id: I0bee07a683a7799fb118eb2d1ac313654a29a64e

src/com/cyanogenmod/filemanager/util/CommandHelper.java
src/com/cyanogenmod/filemanager/util/MediaHelper.java

index 4c98e95..edba969 100644 (file)
@@ -19,7 +19,9 @@ package com.cyanogenmod.filemanager.util;
 import android.content.Context;
 import android.content.Intent;
 import android.media.MediaScannerConnection;
+import android.provider.MediaStore.Files;
 
+import android.provider.MediaStore;
 import com.cyanogenmod.filemanager.commands.AsyncResultListener;
 import com.cyanogenmod.filemanager.commands.ChangeOwnerExecutable;
 import com.cyanogenmod.filemanager.commands.ChangePermissionsExecutable;
@@ -81,6 +83,7 @@ import com.cyanogenmod.filemanager.model.SearchResult;
 import com.cyanogenmod.filemanager.model.User;
 import com.cyanogenmod.filemanager.preferences.CompressionMode;
 import com.cyanogenmod.filemanager.preferences.FileManagerSettings;
+import com.cyanogenmod.filemanager.util.MediaHelper;
 
 import java.io.File;
 import java.io.FileNotFoundException;
@@ -421,12 +424,8 @@ public final class CommandHelper {
                 c.getExecutableFactory().newCreator().createDeleteFileExecutable(file);
         writableExecute(context, executable, c);
 
-        // Do media scan
-        File parent = new File(file).getParentFile();
-        if (parent != null) {
-            MediaScannerConnection.scanFile(context, new String[]{
-                    MediaHelper.normalizeMediaPath(parent.getAbsolutePath())}, null, null);
-        }
+        // Remove from media scanner
+        removeFromMediaStore(context, file);
 
         return executable.getResult().booleanValue();
     }
@@ -813,8 +812,8 @@ public final class CommandHelper {
             File parent = new File(src).getParentFile();
             if (parent != null) {
                 if (!VirtualMountPointConsole.isVirtualStorageResource(parent.getAbsolutePath())) {
-                    MediaScannerConnection.scanFile(context, new String[]{
-                            MediaHelper.normalizeMediaPath(parent.getAbsolutePath())}, null, null);
+                    // Remove from media scanner
+                    removeFromMediaStore(context, src);
                 }
             }
             if (!VirtualMountPointConsole.isVirtualStorageResource(parent.getAbsolutePath())) {
@@ -826,6 +825,11 @@ public final class CommandHelper {
         return ret;
     }
 
+    private static void removeFromMediaStore(Context context, String path) {
+        context.getContentResolver().delete(Files.getContentUri(MediaHelper.EXTERNAL_VOLUME),
+            MediaStore.Files.FileColumns.DATA + "=?", new String[]{path});
+    }
+
     /**
      * Method that copies a file system object.
      *
index d3d2931..f00db57 100644 (file)
@@ -40,7 +40,7 @@ public final class MediaHelper {
     private static final String EXTERNAL_STORAGE = System.getenv("EXTERNAL_STORAGE");
 
     private static final String INTERNAL_VOLUME = "internal";
-    private static final String EXTERNAL_VOLUME = "external";
+    public static final String EXTERNAL_VOLUME = "external";
 
     /**
      * URIs that are relevant for determining album art;