Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c91b03da authored by Stephen Bird's avatar Stephen Bird Committed by Gerrit Code Review
Browse files

MediaScanning: Update with calls to Mediascanner

With older versions of android, updating with
.delete was the proper way to remove these items
The issue is that, doing this does not update MTP.

Change-Id: I9b7098927fbda6e78a9baedb5e5e35968c082108
parent 5911442c
Loading
Loading
Loading
Loading
+22 −24
Original line number Diff line number Diff line
@@ -19,9 +19,9 @@ package com.cyanogenmod.filemanager.util;
import android.content.Context;
import android.content.Intent;
import android.media.MediaScannerConnection;
import android.provider.MediaStore;
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;
@@ -83,7 +83,6 @@ 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;
@@ -308,6 +307,11 @@ public final class CommandHelper {
        CreateDirExecutable executable =
                c.getExecutableFactory().newCreator().createCreateDirectoryExecutable(directory);
        writableExecute(context, executable, c);

        // Do media scan
        MediaScannerConnection.scanFile(context, new String[]{
                MediaHelper.normalizeMediaPath(directory)}, null, null);

        return executable.getResult().booleanValue();
    }

@@ -382,12 +386,9 @@ public final class CommandHelper {
                c.getExecutableFactory().newCreator().createDeleteDirExecutable(directory);
        writableExecute(context, executable, c);

        // Do media scan
        File parent = new File(directory).getParentFile();
        if (parent != null) {
        // update media scan
        MediaScannerConnection.scanFile(context, new String[]{
                    MediaHelper.normalizeMediaPath(parent.getAbsolutePath())}, null, null);
        }
                MediaHelper.normalizeMediaPath(directory)}, null, null);

        return executable.getResult().booleanValue();
    }
@@ -425,7 +426,9 @@ public final class CommandHelper {
        writableExecute(context, executable, c);

        // Remove from mediascanner
        removeFromMediaStore(context, file);
        MediaScannerConnection.scanFile(context, new String[]{
                MediaHelper.normalizeMediaPath(file)
        }, null, null);

        return executable.getResult().booleanValue();
    }
@@ -792,6 +795,7 @@ public final class CommandHelper {
                    ret = false;
                }


                // 2.- Move the temporary file to the final filesystem with the destination console
                if (ret) {
                    moveExecutable =
@@ -810,27 +814,21 @@ public final class CommandHelper {

        // Do media scan (don't scan the file if is virtual file)
        if (ret) {
            File parent = new File(src).getParentFile();
            if (parent != null) {
                if (!VirtualMountPointConsole.isVirtualStorageResource(parent.getAbsolutePath())) {
            File parent = new File(dst).getParentFile();
            if (parent != null && !VirtualMountPointConsole.isVirtualStorageResource(parent
                    .getAbsolutePath())) {

                // Remove from mediascanner
                    removeFromMediaStore(context, src);
                }
            }
            if (!VirtualMountPointConsole.isVirtualStorageResource(parent.getAbsolutePath())) {
                MediaScannerConnection.scanFile(context, new String[]{
                        MediaHelper.normalizeMediaPath(dst)}, null, null);
                        MediaHelper.normalizeMediaPath(src),
                        MediaHelper.normalizeMediaPath(dst)
                }, null, null);
            }
        }

        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.
     *