刷新MediaStore for Images&影片

时间:2018-01-22 04:58:33

标签: android android-studio android-gallery mediastore android-mediascanner

我按照我的要求移动和删除大量图像和视频,现在我使用

扫描媒体
Intent scanFileIntent = new Intent(
Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri);
sendBroadcast(scanFileIntent);

所有工作正常但有时会冻结屏幕,我认为MediaScanner中存在一些问题。

我的第二个问题是如何扫描所有媒体存储,而不是扫描perticuler文件。

先谢谢!!

2 个答案:

答案 0 :(得分:1)

改为使用MediaScannerConnection

public void callScanItent(Context context,String path) {
    MediaScannerConnection.scanFile(context,
            new String[] { path }, null,null);
}

 public void callScanItent(Context context,String path) {
    MediaScannerConnection.scanFile(context,
            new String[]{path}, null, new MediaScannerConnection.OnScanCompletedListener() {
                @Override
                public void onScanCompleted(String path, Uri uri) {
                    Log.d("Scan complete for: ",path);
                }
            });
}

答案 1 :(得分:0)

您应该尝试使用此解决方案并删除图像。

在deleteRecursive(fileOrDirectory)中传递文件目录路径,您可以从文件或目录中删除多个和单个图像。

public void deleteRecursive(File fileOrDirectory) {
    if (!fileOrDirectory.isDirectory()) return;
    File[] childFiles = fileOrDirectory.listFiles();
    if (childFiles == null) return;
    if (childFiles.length == 0) {
        fileOrDirectory.delete();
    } else {
        for (File childFile : childFiles) {
            deleteRecursive(childFile);
            DeleteAndScanFile(MainActivity.this, childFile.getPath(), childFile);
        }
    }


}

private void DeleteAndScanFile(final Context context, String path,
                               final File fi) {
    String fpath = path.substring(path.lastIndexOf("/") + 1);
    try {
        MediaScannerConnection.scanFile(context, new String[]{Environment
                        .getExternalStorageDirectory().toString()
                        + "/abc/"
                        + fpath.toString()}, null,
                new MediaScannerConnection.OnScanCompletedListener() {
                    public void onScanCompleted(String path, Uri uri) {
                        if (uri != null) {
                            context.getContentResolver().delete(uri, null,
                                    null);
                        }
                        fi.delete();
                    }
                });
    } catch (Exception e) {
        e.printStackTrace();
    }

}

这对我来说很好,希望这对你有帮助......如果你需要任何帮助,你可以问