删除照片后如何刷新Android的MediaStore

Ali*_*aka 5 android mediastore android-mediascanner

问题:如何让媒体商店刷新其DELETED文件的条目?

从外部存储中删除代码中的照片后,我仍然在库中看到已删除照片的插槽 - 空白照片.

看起来画廊反映了媒体商店,并且在电话重新启动之前,媒体商店中已找到已删除的照片 - 直到重新扫描媒体.

尝试扫描删除的文件并没有帮助扫描删除的文件(工作只是为新的或现有的文件): MediaScannerConnection.scanFile(Application.get(), new String[]{file.getPath()}, null, null)(我试过扫描父文件夹以及).

也试图ACTION_MEDIA_SCANNER_SCAN_FILE无济于事.例:Application.get().sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)))

发送广播接收器以重新扫描整个外部存储(从而刷新媒体存储)就可以了: Application.get().sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.fromFile(Environment.getExternalStorageDirectory())))

但是,从4.4开始,Android似乎在尝试手动发送ACTION_MEDIA_MOUNTED系统广播时抛出安全异常.请参阅@ CommonsWare的帖子:http://commonsware.com/blog/2013/11/06/android-4p4-permission-regressions.html

所以,我没有解决在文件(/ photo/video/etc.)删除时刷新媒体商店的问题.

Sob*_*obo 4

我发现以下内容在 Nexus 10 的 4.4 中适用。

// request scan
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(intent, SELECT_PICTURE);
Intent scanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
scanIntent.setData(Uri.fromFile(refreshFile));
sendBroadcast(scanIntent);
Run Code Online (Sandbox Code Playgroud)

“refreshFile”是我从字符串“fPath”中获取的删除的文件,然后将其转换为文件。

String filePath = fPath;        
File refreshFile = new File(filePath);
Run Code Online (Sandbox Code Playgroud)

  • Kilaka,这不是我的代码。就像我说的。我找到了!!它对我有用!所以你降低了我的声誉,因为它对你不起作用......这么多尝试帮助别人。 (3认同)