android 图片路径path和uri之间的相互转换

本文介绍了一种在Android环境中实现URI与文件路径相互转换的方法。包括如何从URI获取实际文件路径,以及如何将文件路径转换为URI。这些方法对于处理多媒体文件特别有用,尤其是在需要与ContentResolver交互的情况下。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
* uri转path
*/
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[] { MediaStore.Images.ImageColumns.DATA }, null, null, null );
if null != cursor ) {
if ( cursor.moveToFirst() ) {
int index = cursor.getColumnIndex( MediaStore.Images.ImageColumns.DATA );
if ( index > -) {
data = cursor.getString( index );
}
}
cursor.close();
}
}
return data;
}   

/**
* path转uri
*/
private Uri getUri(String path){
Uri uri = null;
if (path != null) {
path = Uri.decode(path);
Log.d(TAG"path2 is " + path);
ContentResolver cr = this.getContentResolver();
StringBuffer buff = new StringBuffer();
buff.append("(")
.append(MediaStore.Images.ImageColumns.DATA)
.append("=")
.append("'" + path + "'")
.append(")");
Cursor cur = cr.query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
new String[] { MediaStore.Images.ImageColumns._ID },
buff.toString(), null, null);
int index = 0;
for (cur.moveToFirst()!cur.isAfterLast()cur
.moveToNext()) {
index = cur.getColumnIndex(MediaStore.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;
}
}
}
return uri;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值