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
我也试过用IO流的方式获取位图,也的确能显示,但因为此方法得到的路径在程序的其他地方还会调用,所以不好绕过,所以请论坛大神帮忙看看这个方法哪有问题?
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流的方式获取位图,也的确能显示,但因为此方法得到的路径在程序的其他地方还会调用,所以不好绕过,所以请论坛大神帮忙看看这个方法哪有问题?
...全文
相关推荐
Android开发WebView获取SD卡图片并显示
webview可以获取SD卡图片并显示,且完美解决Android4.4以后webview无法访问SD卡图片的问题。
android跳到系统相册选择图片并根据uri获取真实图片路径
1.首先跳转到系统相册选择图片 public void ChoosePicture(View view) { // 激活系统图库,选择一张图片 Intent intent = new Intent(); intent.setAction(Intent.ACTION_PICK); intent.setType("image/*"...
安卓从文件夹读取图片路径并显示图片
安卓从文件夹读取图片路径并显示图片,简单小巧,适合安卓初学者学习读取图片路径并显示图片
Android获取手机图库图片及图片路径
网上搜索好几种资料,结合起来,解决了不能正确获取手机图库路径的问题 ——技术小鸟
Android万能图片选择框架.
Android万能图片选择框架.防止OOM .


