概述
转自于:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0821/1660.html
/**
* 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;
}
}
}
}
|
最后
以上就是娇气发箍为你收集整理的【重头学习Android】关于path与URI的转换的全部内容,希望文章能够帮你解决【重头学习Android】关于path与URI的转换所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复