我正在开发一个Android应用程序,当用户点击一个按钮时,应用程序会将用户带到图库中选择一张照片,然后返回应用程序显示照片。
以下是我的onActivityResult
回调函数的一部分:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == PICK_IMAGE && data != null && data.getData() != null) {
Uri imageUri = data.getData();
//User had pick an image.
Cursor cursor = getContentResolver().query(imageUri, new String[] { android.provider.MediaStore.Images.ImageColumns.DATA }, null, null, null);
cursor.moveToFirst();
//Link to the image
final String imageFilePath = cursor.getString(0);
// imageFilePath is null
运行代码时,imageUri
包含一些内容提供者uri,如content:\\something
,但当我尝试获取图像的文件路径时,我得到了null。
如何检索用户在这种情况下选择的图像文件路径?
谢谢
答案 0 :(得分:1)
这是我的代码,它的工作原理。
Uri selectedImageURI = data.getData();
imageFile = new File(getRealPathFromURI(selectedImageURI));
private String getRealPathFromURI(Uri contentURI) {
Cursor cursor = getContentResolver().query(contentURI, null, null, null, null);
if (cursor == null) { // Source is Dropbox or other similar local file path
return contentURI.getPath();
} else {
cursor.moveToFirst();
int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
return cursor.getString(idx);
}
}
您将获得/ sdcard / imagepath ..