从Mediastore获取URI的文件名和路径
从Mediastore获取URI的文件名和路径
我有一个从mediastore选择图片后返回的onActivityResult
,我可以使用以下方式获取图像的URI:
Uri selectedImage = data.getData();
将其转换为字符串如下所示:
content://media/external/images/media/47
或将其转换为路径如下所示:
/external/images/media/47
但是我似乎找不到一种将其转换为绝对路径的方法,因为我想将图像加载到位图中,而不必将其复制到其他位置。我知道可以使用URI和内容解析器来完成此操作,但在重新启动手机时,似乎会出现问题,我猜MediaStore
在重新启动后不会保持其编号相同。
admin 更改状态以发布 2023年5月21日
关于第一个回答的简单更新: mActivity.managedQuery()
现在被弃用了。我已经使用新的方法更新了代码。
private String getRealPathFromURI(Uri contentUri) { String[] proj = { MediaStore.Images.Media.DATA }; CursorLoader loader = new CursorLoader(mContext, contentUri, proj, null, null, null); Cursor cursor = loader.loadInBackground(); int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); String result = cursor.getString(column_index); cursor.close(); return result; }
API 19以下使用以下代码从URI获取文件路径:
public String getRealPathFromURI(Context context, Uri contentUri) { Cursor cursor = null; try { String[] proj = { MediaStore.Images.Media.DATA }; cursor = context.getContentResolver().query(contentUri, proj, null, null, null); int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); return cursor.getString(column_index); } finally { if (cursor != null) { cursor.close(); } } }