java - Context.contentResolver.openInputStream(uri) 抛出 FileNotFoundException
问题描述
我正在使用此意图让用户选择文件
val fileChooser = Intent(Intent.ACTION_GET_CONTENT)
fileChooser.type = "*/*"
fileChooser.addCategory(Intent.CATEGORY_OPENABLE)
fileChooser.putExtra(Intent.EXTRA_LOCAL_ONLY, true)
fileChooser.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)
startActivityForResult(fileChooser, FILE_REQUEST_CODE)
而在onActivityResult
val uri: Uri? = data.data
context?.contentResolver?.openInputStream(uri)
在这一行中,它抛出异常 java.io.FileNotFoundException: No such file or directory at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:146)
它仅在 Android 5 设备中引发此异常,并且仅适用于 docx、xlsx、mp3 文件类型,其他图像和视频文件使用相同的代码可以正常工作
这是我从意图中获得的示例 uri:content://com.android.providers.downloads.documents/document/30159
解决方案
推荐阅读
- javascript - 多次按下按钮后按钮周围的元素变为活动状态
- javascript - 理解 passport.authenticate('local') 语法位
- java - Spring bean中属性的多个值
- excel - 如何根据多个标准对收入进行排名。微软Excel
- reactjs - 在 react js 的父类中单击按钮时,将布尔状态值从父类传递给子类,以便我可以使用 bool 加载测验
- performance - SQL Server:相同的存储过程在 1 个 DB 上运行良好,但在第 2 个 DB 上运行缓慢
- node.js - 我想将文件上传到 Blob 存储,而不是作为流(缓冲区,base64),而是作为原始文件(jpg,png jpeg)
- mysql - 安装 hive 并运行 hive 后,出现了几个问题,无法运行 hive
- java - spring boot - 在同一个线程上创建和销毁 bean
- cassandra - Cassandra:在特定节点上查询数据