android图片文件的路径地址与Uri的相互转换
来源:互联网 发布:淘宝客推广到哪里 编辑:程序博客网 时间:2024/05/25 23:57
一个android文件的Uri地址一般如下:
content://media/external/images/media/62026
这是一张图片的Uri,那么我们如何根据这个Uri获得其在文件系统中的路径呢?
其实很简单,直接上代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/**
* Try to return the absolute file path from the given Uri
*
* @param context
* @param uri
* @return the file path or null
*/
public static String getRealFilePath( final Context context, final Uri uri ) {
if
(
null
== uri )
return
null
;
final String scheme = uri.getScheme();
String data =
null
;
if
( scheme ==
null
)
data = uri.getPath();
else
if
( ContentResolver.SCHEME_FILE.equals( scheme ) ) {
data = uri.getPath();
}
else
if
( ContentResolver.SCHEME_CONTENT.equals( scheme ) ) {
Cursor cursor = context.getContentResolver().query( uri,
new
String[] { ImageColumns.DATA },
null
,
null
,
null
);
if
(
null
!= cursor ) {
if
( cursor.moveToFirst() ) {
int index = cursor.getColumnIndex( ImageColumns.DATA );
if
( index > -1 ) {
data = cursor.getString( index );
}
}
cursor.close();
}
}
return
data;
}
那么假如我们有一个图片的路径地址又该如何获得其Uri呢?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
String type = Utils.ensureNotNull(intent.getType());
Log.d(TAG,
"uri is "
+ uri);
if
(uri.getScheme().equals(
"file"
) && (type.contains(
"image/"
))) {
String path = uri.getEncodedPath();
Log.d(TAG,
"path1 is "
+ path);
if
(path !=
null
) {
path = Uri.decode(path);
Log.d(TAG,
"path2 is "
+ path);
ContentResolver cr =
this
.getContentResolver();
StringBuffer buff =
new
StringBuffer();
buff.append(
"("
)
.append(Images.ImageColumns.DATA)
.append(
"="
)
.append(
"'"
+ path +
"'"
)
.append(
")"
);
Cursor cur = cr.query(
Images.Media.EXTERNAL_CONTENT_URI,
new
String[] { Images.ImageColumns._ID },
buff.toString(),
null
,
null
);
int index = 0;
for
(cur.moveToFirst(); !cur.isAfterLast(); cur
.moveToNext()) {
index = cur.getColumnIndex(Images.ImageColumns._ID);
// set _id value
index = cur.getInt(index);
}
if
(index == 0) {
//do nothing
}
else
{
Uri uri_temp = Uri
.parse(
"content://media/external/images/media/"
+ index);
Log.d(TAG,
"uri_temp is "
+ uri_temp);
if
(uri_temp !=
null
) {
uri = uri_temp;
}
}
}
}
0 0
- android图片文件的路径地址与Uri的相互转换
- android图片文件的路径地址与Uri的相互转换
- android图片文件的路径地址与Uri的相互转换
- android图片文件的路径地址与Uri的相互转换
- android图片文件的路径地址与Uri的相互转换
- android图片文件的路径地址与Uri的相互转换
- android图片文件的路径地址与Uri的相互转换
- android 路径地址与Uri的相互转换 uri转string
- android 路径地址与Uri的相互转换 uri转string
- android 图片路径path和uri之间的相互转换
- URI 和 文件路径 的相互转换
- android Uri利用及解析(文件操作)以及与路径的相互转换
- 图片uri与path的相互转换
- Android图片路径与Uri相互转化
- 文件File path与content:// Uri的相互转换
- 文件File path与content:// Uri的相互转换
- android通过系统调用图片文件的Uri转换为绝对文件路径
- Uri的相互转换
- 判断点在多边形内,水平/垂直交叉点数判别法(适用于任意多边形)
- 第40讲项目9——污损的单据
- 给 Android 开发者的 RxJava 详解
- 实现外部控件滚动条控制Dsoframer word的滚动
- Android--这些小工具让你的Android 开发更高效
- android图片文件的路径地址与Uri的相互转换
- 定位技术的方法
- Java数据类型中String、Integer、int相互间的转换
- UILabel设置行距和每段初始距离
- 两分钟彻底让你明白Android中onInterceptTouchEvent与onTouchEvent(图文)!
- 01-git入门知识
- 文档排版-word
- hdu 1180 诡异的楼梯 bfs+优先队列 解题报告
- Android OpenGL ES 2.0 的开发思路总结