尝试从uri获取Android MediaStore的真实路径,而当游标不为null时,cursor.getString()为null。为什么?

时间:2018-07-15 08:02:07

标签: android mediastore

试图从uri获取选定图像的真实路径,但是当光标根本不为空时,filePath = cursor.getString()却为空。

为什么?

在我的应用程序代码中,我有一个onActivityResult从媒体存储图像选择中返回,我可以使用以下方法获取图像的URI:

Uri selectedImage = data.getData();

然后我尝试通过调用如下所示的函数来获取所选图像的真实路径。

realPath = RealPathUtil.getRealPathFromURI(this, selectedImage);

public static String getRealPathFromURI(Context context, Uri uri){

        String filePath = "";
        String[] column = { MediaStore.Images.Media.DATA };

        Cursor cursor = context.getContentResolver().query(uri,
                column, null, null, null);

        if( null != cursor ) {
            if (cursor.moveToFirst()) {
                int columnIndex = cursor.getColumnIndex(column[0]);
                if( columnIndex > -1 )
                    filePath = cursor.getString(columnIndex); //why got a null
            }
            cursor.close();

        return filePath;
    }

逐步调试环境是具有API 23的AVD。 我运行了该应用程序,并从内部存储\ Pictures文件夹中选择了一张图片。

运行完一行代码后,

filePath = cursor.getString(columnIndex); 

我发现filePath为空,然后c ursor.getCount() == 1 and columnIndex == 0.

这是为什么?

0 个答案:

没有答案