android系统通过图片绝对路径获取URI的三种方法
来源:互联网 发布:国外人工智能网站 编辑:程序博客网 时间:2024/05/17 02:05
老马的技术博客
android系统通过图片绝对路径获取URI的三种方法
最近做项目要通过图片的绝对路径找到图片的URI,然后删除图片,小小总结一下获取URI的方法,亲自试验在
android 4.1.3的系统上都是可用的。
1.将所有的图片路径取出,遍历比较找到需要的路径,取出URI,效率较低
其中 MediaStore.MediaColumns.DATA 字段存的就是图片的绝对路径,
最后mImageUri得到的就是图片的URI
1 Uri mUri = Uri.parse("content://media/external/images/media");
2 Uri mImageUri = null;
3 Cursor cursor = managedQuery(
4 MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null,
5 MediaStore.Images.Media.DEFAULT_SORT_ORDER);
6 cursor.moveToFirst();
7
8 while (!cursor.isAfterLast()) {
9 String data = cursor.getString(cursor
10 .getColumnIndex(MediaStore.MediaColumns.DATA));
11 if (picPath.equals(data)) {
12 int ringtoneID = cursor.getInt(cursor
13 .getColumnIndex(MediaStore.MediaColumns._ID));
14 mImageUri = Uri.withAppendedPath(mUri, "" + ringtoneID);
15 break;
16 }
17 cursor.moveToNext();
18 }
2.直接从媒体数据库根据字段取出相应的记录,效率较高
1 //TYLT: add by duanyf 20121027 start
2 String type = Utils.ensureNotNull(intent.getType());
3 Log.d(TAG, "uri is " + uri);
4 if (uri.getScheme().equals("file") && (type.contains("image/"))) {
5 String path = uri.getEncodedPath();
6 Log.d(TAG, "path1 is " + path);
7 if (path != null) {
8 path = Uri.decode(path);
9 Log.d(TAG, "path2 is " + path);
10 ContentResolver cr = this.getContentResolver();
11 StringBuffer buff = new StringBuffer();
12 buff.append("(")
13 .append(Images.ImageColumns.DATA)
14 .append("=")
15 .append("'" + path + "'")
16 .append(")");
17 Cursor cur = cr.query(
18 Images.Media.EXTERNAL_CONTENT_URI,
19 new String[] { Images.ImageColumns._ID },
20 buff.toString(), null, null);
21 int index = 0;
22 for (cur.moveToFirst(); !cur.isAfterLast(); cur
23 .moveToNext()) {
24 index = cur.getColumnIndex(Images.ImageColumns._ID);
25 // set _id value
26 index = cur.getInt(index);
27 }
28 if (index == 0) {
29 //do nothing
30 } else {
31 Uri uri_temp = Uri
32 .parse("content://media/external/images/media/"
33 + index);
34 Log.d(TAG, "uri_temp is " + uri_temp);
35 if (uri_temp != null) {
36 uri = uri_temp;
37 }
38 }
39 }
40 }
41 //TYLT: add by duanyf 20121027 end
3.直接根据路径通过 ContentProvider 的 delete() 方法删除图片,两行代码搞定,效率最高
1 String params[] = new String[]{filepath};
2 ctx.getContentResolver().delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, MediaStore.Images.Media.DATA + " LIKE ?", params);
PS:通过URI删除图片可以删除媒体库的信息和缩略图一并删除,不留痕迹,如果直接通过路径删除文件会删除不干净
- 老马的技术博客 android系统通过图片绝对路径获取URI的三种方法
- android系统通过图片绝对路径获取URI的三种方法
- android系统通过图片绝对路径获取URI的三种方法
- android系统通过图片绝对路径获取URI的三种方法
- android系统通过图片绝对路径获取URI的三种方法
- android 通过图片的uri来获取图片的绝对路径
- Android 获取手机系统图片、拍照图片时回调后通过URI解析路径的方法,比较全面!!!!
- Android根据图片Uri获取图片绝对路径
- Android根据图片Uri获取图片绝对路径
- Android根据URI获取图片绝对路径
- 绝对路径获取图片URI
- 根据uri获取图片的绝对路径
- android 通过uri获取图片并根据限制大小读取图片的方法
- Android获取URI的绝对路径的类
- 【Android-图片小技巧】通过给定的uri获取图片
- uri路径获取的三种方法
- 一些有关Android图片的操作,判断方向,旋转,根据uri获取绝对路径,缩放与移动
- Android通过Uri获取文件的路径的方法
- JavaScript思维导图
- Vim 快捷键整理
- 大数取余
- C++多线程
- CSDN邮件病毒?
- android系统通过图片绝对路径获取URI的三种方法
- netty-protobuf-rpc与protobuf-socket-rpc互通
- SQL2000数据库查询讲解002--最简单的查询
- 程序员的收藏之免费QQ秀
- 反射-初识
- .NET中的动态编译
- 从拼图游戏开始(九)_界面优化及功能完善
- 关闭资源.close()语句放在try里面好还是finally里面好?
- www.matrix67.com