所选图片的路径为空

时间:2018-06-30 21:45:34

标签: android android-gallery

我正在尝试获取URI的真实路径。

首先,我通过一个意图启动图库应用程序:

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select picture"), SELECT_IMAGE );

在调用onActivityResult之后,我尝试在其中获取URI的绝对路径。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    try {
        if (resultCode == RESULT_OK) {
            Uri uri;
            if (requestCode == SELECT_IMAGE) {
                final Uri uri_data = data.getData();
                // Get the path from the Uri
                final String path = getPathFromURI(uri_data);
                if (path != null) {
                    File f = new File(path);
                    uri = Uri.fromFile(f);
                }
            }
        }
    } catch (Exception e) {
        Log.e("FileSelectorActivity", "File select error", e);
    }
}

uri_data包含“ content://com.android.providers.media.documents/document/image%3A67”,但结果路径为空。

pathFromUri方法如下:

private String getPathFromURI(Uri contentUri) {
String res = null;
String[] proj = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(contentUri, proj, null, null, null);
if (cursor.moveToFirst()) {
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    res = cursor.getString(column_index);
}
cursor.close();
return res;
}

此处column_index为0,但cursor.getString返回null。

为什么会这样?

我拥有android.permission.READ_EXTERNAL_STORAGE权限

编辑: 因此,我想通过相机应用程序拍照,然后用户选择图像。因此,该文件应手动存储在手机上(这是因为我正在手机上对其进行测试)

编辑:

Okey,解决方案是在运行时请求权限...对不起,伙计们

0 个答案:

没有答案