我有这样的图像uri:“ content://com.iceburgapp.provider/external_files/.pkgName/File1.jpg ”
现在,每当我获得路径时,它就会给我:“ /external_files/.pkgName/File1.jpg ”
我想从内容Uri获取RealPathFrom。 我从stackoverflow获得了解决方案,并且尝试了以下代码,但对我不起作用:
public String getRealPathFromURI(Context context, Uri contentUri) {
Cursor cursor = null;
try {
String[] proj = { MediaStore.Images.Media.DATA };
cursor = context.getContentResolver().query(contentUri, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
} finally {
if (cursor != null) {
cursor.close();
}
}
}
任何人都知道该怎么做?使用上述代码时出现以下错误。 java.lang.IllegalArgumentException:列'_data'不存在。可用列:[]
由于contentUri使用文件提供程序,因此仅在Naught and oreo设备中不起作用。
答案 0 :(得分:1)
使用ContentResolver
和openInputStream()
在InputStream
所标识的内容上获得Uri
。理想情况下,无论您要做什么,都直接使用该流。或者,在您控制的文件上使用该InputStream
和某些FileOutputStream
来复制内容,然后使用该文件。
此功能在Android N之前的设备中正常运行