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

Commit f7021936 authored by Stephen Bird's avatar Stephen Bird
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
(cherry picked from commit c72bf844)
parent b2dfe80d
Loading
Loading
Loading
Loading
+21 −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();
    }
@@ -809,27 +812,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.
     *