从URI获取文件的真实路径?

时间:2019-01-28 12:12:21

标签: java android uri android-file

我正在通过使用ACTION_GET_CONTENT Intent开发一种使用.pdf,.doc和.docx文件的功能。

您可能猜到我需要从Intent返回的uri获取Real文件路径。 我已经搜索了至少三天,以找出使用URI给出文件或真实路径的代码。但是在这些代码中,只有从“下载”或“最近”或内部或其他文件中选择的文件才起作用。但是找不到适用于所有选项的代码,即“最近使用”,“下载”,内部存储,SD卡,“驱动器”和“放置”框。

这些是我尝试过的解决方案。 https://www.dev2qa.com/how-to-get-real-file-path-from-android-uri/

How to get the Full file path from URI

甚至

https://github.com/iPaulPro/aFileChooser/blob/master/aFileChooser/src/com/ipaulpro/afilechooser/utils/FileUtils.java

我想要在Android Lollipop和Android Pie之间的android版本中工作的代码。

这是我的意图

Intent intent1 = new Intent(Intent.ACTION_GET_CONTENT);
intent1.addCategory(Intent.CATEGORY_OPENABLE);
intent1.setType(mimeTypes.length == 1 ? mimeTypes[0] : "*/*");
if (mimeTypes.length > 0) {
    intent1.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes);
}
startActivityForResult(Intent.createChooser(intent1, "ChooseFile"), REQUEST_CODE_PICK_FILE);

每次我测试这些代码时,

Caused by: java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1024, result=-1, data=Intent { dat=content://com.android.externalstorage.documents/document/primary:Download/62-2.pdf flg=0x1 }} to activity {com.xxx.xxx.xxx}: java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.

0 个答案:

没有答案