我有一个从媒体存储图像选择返回的 onActivityResult
,我可以使用以下内容获取图像的 URI:
Uri selectedImage = data.getData();
将其转换为字符串会得到:
content://media/external/images/media/47
或者给一条路径:
/external/images/media/47
但是我似乎找不到将其转换为绝对路径的方法,因为我想将图像加载到位图中而不必将其复制到某处。我知道这可以使用 URI 和内容解析器来完成,但这似乎会在重启手机时中断,我猜 MediaStore
在重启之间不会保持其编号相同。
最佳答案
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();
}
}
}
关于android - 从 mediastore 的 URI 获取文件名和路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3401579/