首页 > 解决方案 > 从图库文件路径中选择图像返回 NULL

问题描述

我想从图库中挑选一张图片并获取它的路径。这是我用来打开画廊的代码

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

onActivityResult

protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
    if (resultCode == RESULT_OK) {
        Uri selectedImageUri = imageReturnedIntent.getData();

        String[] filePathColumn = {MediaStore.Images.Media.DATA};
        Cursor cursor = getContentResolver().query(selectedImageUri, filePathColumn, null, null, null);
        cursor.moveToFirst();
        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        String filePath = cursor.getString(columnIndex);
        cursor.close();

        Log.d("TAG", "onActivityResult: " + filePath);
    }
}

filePathnull如果我从默认系统图像选择器中选择图像,总是如此,尽管如果从图库应用程序中选择图像,它工作正常。我的代码有什么问题?

标签: androidandroid-intentandroid-image

解决方案


没有要求从或ACTION_GET_CONTENT返回 a否则有一个列。UriMediaStoreUriDATA

另请注意,您无权访问Android 10 及更高版本上DATA的值列MediaStore Uri,因此“工作正常”只是暂时的。

我想从图库中挑选一张图片并获取它的路径

没有路径。用户可能正在从云存储提供商(例如 Google Drive)中选择一段内容。

也可以看看:


推荐阅读