Android中选择图片后如何获得其路径?

h994123050 h994123050 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
最近在工作中遇到这个问题,我的应用中有个功能,点击某Imagview进入手机图库,点击图片后返回Activity获得所选图片的路径,在代码中提供了下面的方法:
public String getRealPathFromURI(Uri contentUri) {
String res = null;
String[] proj = {MediaStore.Images.Media.DATA};
// Cursor cursor = getContentResolver().query(contentUri, proj, null, null, null);
CursorLoader loader = new CursorLoader(this, contentUri, proj, null, null, null);
// Cursor cursor= managedQuery(contentUri, proj, null, null, null);
Cursor cursor=loader.loadInBackground();
Log.i("msg","=============>>>>>>>>"+contentUri);
Log.i("msg","cursor=============>>>>>>>>"+cursor.toString());
if (cursor.moveToFirst()) {
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
Log.i("msg","column_index=============>>>>>>>>"+column_index);
res = cursor.getString(column_index);
Log.i("msg","res=============>>>>>>>>"+res);
}
cursor.close();
return res;
}
但是运行后返回值为null,百思不得其解,Logcat的消息如下:
12-03 14:18:31.555 1788-1788/dev.sunshine.song.driver I/msg: ==============>>>>>>>>>content://com.android.providers.media.documents/document/image%3A245050
12-03 14:18:31.585 1788-1788/dev.sunshine.song.driver I/msg: cursor=============>>>>>>>>android.content.ContentResolver$CursorWrapperInner@43591110
12-03 14:18:31.585 1788-1788/dev.sunshine.song.driver I/msg: column_index=============>>>>>>>>0
12-03 14:18:31.585 1788-1788/dev.sunshine.song.driver I/msg: res=============>>>>>>>>null
我也试过用IO流的方式获取位图,也的确能显示,但因为此方法得到的路径在程序的其他地方还会调用,所以不好绕过,所以请论坛大神帮忙看看这个方法哪有问题?
...全文
评论
收藏 已收藏
分享
返回顶部
h994123050
Java 51,407 成员 86,129 内容