首页 > 解决方案 > 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

标签: javaandroidandroid-intentinputstreamandroid-contentresolver

解决方案


推荐阅读