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.)删除时刷新媒体商店的问题.
我发现以下内容在 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)
| 归档时间: |
|
| 查看次数: |
6832 次 |
| 最近记录: |