Android 删除文件夹中的图片并同步到媒体库

问题:项目中用到了上传图片,上传之前压缩的时候图片缓存到了本地的一个文件夹中,清除缓存的时候操作是吧缓存的文件夹直接执行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())));
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值