Android - 获取用户从图库中选择的图像路径

时间:2014-01-03 02:49:14

标签: android

我正在开发一个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。

如何检索用户在这种情况下选择的图像文件路径?

谢谢

1 个答案:

答案 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 ..