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 树莓派与pix飞控通信
    • ¥15 自动转发微信群信息到另外一个微信群
    • ¥15 outlook无法配置成功
    • ¥30 这是哪个作者做的宝宝起名网站
    • ¥60 版本过低apk如何修改可以兼容新的安卓系统
    • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
    • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
    • ¥50 有数据,怎么用matlab求全要素生产率
    • ¥15 TI的insta-spin例程
    • ¥15 完成下列问题完成下列问题