无法直接删除安卓图片浏览器中图片
2015-10-30 16:04
393 查看
当我们使用Intent打开图片浏览器如:
获取到的图片的地址如:
然而, 我们直接
发现,执行后,再次打开图片浏览器,图片还是存在的。但是文件确实不存在了。然而是不是觉得很矛盾?
其实不茅盾,在系统数据库里,它保存的方式其实有2种,你删除的仅仅是物理文件而已。
图片浏览器显示的数据库记录里面的另外一种持久化,具体方式可能是byte方式(本人猜测),具体情况看文档
因此,我们只能通过内容提供者来间接清理这条数据库整条记录
解决方案:
Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(intent, 1);
获取到的图片的地址如:
Uri originalUri = data.getData(); ContentResolver resolver = this.getContentResolver(); String[] proj = {MediaStore.Images.Media.DATA}; Cursor cursor = managedQuery(originalUri, proj, null, null, null); int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); if( cursor.moveToFirst()) { String path = cursor.getString(column_index); }
然而, 我们直接
File file =new File(path); if(file.exists()) file.delete();
发现,执行后,再次打开图片浏览器,图片还是存在的。但是文件确实不存在了。然而是不是觉得很矛盾?
其实不茅盾,在系统数据库里,它保存的方式其实有2种,你删除的仅仅是物理文件而已。
图片浏览器显示的数据库记录里面的另外一种持久化,具体方式可能是byte方式(本人猜测),具体情况看文档
因此,我们只能通过内容提供者来间接清理这条数据库整条记录
解决方案:
ContentResolver resolver = this.getContentResolver(); //path 文件的路径 resolver.delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, MediaStore.Images.Media.DATA + "=?", new String[]{path});
相关文章推荐
- iOS 常用宏定义
- Android下产生随机数的方法的选择
- java实现文件下载功能,自动弹出保存窗口
- LAMP简单架构实验:Apache+NFS+MySQL
- 如何使用multipart/form-data格式上传文件
- Win7 和 MAC 系统通过VMware共享文件夹
- beginthreadex CreateThread
- 【SSH项目实战】国税协同平台-11.角色权限管理1
- 欧拉公式
- Aizu-0033 Ball
- iptables 添加,删除,查看,修改
- shiro入门
- 最小生成树
- RandomList 的一个bug
- Unix高级环境编程学习之-----线程pthread_create
- Ubuntu中安装TurnServer服务器
- noip2013 花匠 (动态规划求最长抖动序列)
- [置顶] 【android】音乐播放器之设计思路
- SQL中GETDATE()一些操作
- xlsx批量转为utf8的csv