h994123050 2015-12-03 06:28
浏览 2225

Android中选择图片后获得路径的方法

最近在工作中遇到这个问题,我的应用中有个功能,点击某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
12-03 14:18:31.620 1788-1788/dev.sunshine.song.driver I/msg: path====================>>>>>>>>>>null

我也试过用IO流的方式获取位图,也的确能显示,但因为此方法得到的路径在程序的其他地方还会调用,所以不好绕过,所以请论坛大神帮忙看看这个方法哪有问题?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 R语言Rstudio突然无法启动
    • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
    • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
    • ¥15 用windows做服务的同志有吗
    • ¥60 求一个简单的网页(标签-安全|关键词-上传)
    • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
    • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
    • ¥100 为什么这个恒流源电路不能恒流?
    • ¥15 有偿求跨组件数据流路径图
    • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值