android图片文件的路径地址与Uri的相互转换方法
一个android文件的Uri地址一般如下:
content://media/external/images/media/62026
这是一张图片的Uri,那么我们如何根据这个Uri获得其在文件系统中的路径呢?
其实很简单,直接上代码:
publicstaticStringgetRealFilePath(finalContextcontext,finalUriuri){
if(null==uri)returnnull;
finalStringscheme=uri.getScheme();
Stringdata=null;
if(scheme==null)
data=uri.getPath();
elseif(ContentResolver.SCHEME_FILE.equals(scheme)){
data=uri.getPath();
}elseif(ContentResolver.SCHEME_CONTENT.equals(scheme)){
Cursorcursor=context.getContentResolver().query(uri,newString[]{ImageColumns.DATA},null,null,null);
if(null!=cursor){
if(cursor.moveToFirst()){
intindex=cursor.getColumnIndex(ImageColumns.DATA);
if(index>-1){
data=cursor.getString(index);
}
}
cursor.close();
}
}
returndata
}
如我们有一个图片的路径地址又该如何获得其Uri呢?
Stringtype=Utils.ensureNotNull(intent.getType());
Log.d(TAG,"uriis"+uri);
if(uri.getScheme().equals("file")&&(type.contains("image/"))){
Stringpath=uri.getEncodedPath();
Log.d(TAG,"path1is"+path);
if(path!=null){
path=Uri.decode(path);
Log.d(TAG,"path2is"+path);
ContentResolvercr=this.getContentResolver();
StringBufferbuff=newStringBuffer();
buff.append("(")
.append(Images.ImageColumns.DATA)
.append("=")
.append("'"+path+"'")
.append(")");
Cursorcur=cr.query(
Images.Media.EXTERNAL_CONTENT_URI,
newString[]{Images.ImageColumns._ID},
buff.toString(),null,null);
intindex=0;
for(cur.moveToFirst();!cur.isAfterLast();cur
.moveToNext()){
index=cur.getColumnIndex(Images.ImageColumns._ID);
//set_idvalue
index=cur.getInt(index);
}
if(index==0){
//donothing
}else{
Uriuri_temp=Uri
.parse("content://media/external/images/media/"
+index);
Log.d(TAG,"uri_tempis"+uri_temp);
if(uri_temp!=null){
uri=uri_temp;
}
}
}
}
以上这篇android图片文件的路径地址与Uri的相互转换方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。