试图从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.
这是为什么?