问题:项目中用到了上传图片,上传之前压缩的时候图片缓存到了本地的一个文件夹中,清除缓存的时候操作是吧缓存的文件夹直接执行 delete() 操作。但是在去图片框架中选择图片的时候,删除的文件夹还在,里面的图片无法查看。
造成问题的原因就是缓存文件夹中的文件删除后安卓媒体数据库并不能实时刷新, 我们需要手动让系统去更新数据库中的数据. 通知系统文件改变了数据库也要刷新.
安卓 4.4 之前可以直接发一个广播 Intent.ACTION_MEDIA_MOUNTED 通知系统刷新, 4.4 之后改 API 已经禁止我们调用, 可以使用 MediaScannerConnection 刷新.
具体操作
- //删除文件后更新数据库 通知媒体库更新文件夹
- public static void updateFileFromDatabase(Context context, File file) {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
- String[] paths = new String[] {
- Environment.getExternalStorageDirectory().toString()
- };
- MediaScannerConnection.scanFile(context, paths, null, null);
- MediaScannerConnection.scanFile(context, new String[] {
- file.getAbsolutePath()
- },
- null, new MediaScannerConnection.OnScanCompletedListener() {
- public void onScanCompleted(String path, Uri uri) {}
- });
- } else {
- context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
- }
- }
来源: http://www.tuicool.com/articles/EVVNf2r