如何解决Android 11 无法从本地存储读取非媒体文件
我在 Android 11 中遇到文件选择器问题。图像或视频等文件可读,但文档等不可读。 我仔细检查了存储读取权限。
示例:
uri = content://com.android.providers.downloads.documents/document/103
someFile = /storage/emulated/0/Download/IMG_20210310_232019_1.jpg
someFile.canRead -> true
但是:
uri = content://com.android.providers.downloads.documents/document/msf:1390
someFile = /storage/emulated/0/Download/file-example_PDF_1MB.pdf
someFile.canRead() -> false
然后:
com.amazonaws.AmazonClientException: Unable to calculate MD5 hash: /storage/emulated/0/Download/file-example_PDF_1MB.pdf: open Failed: EACCES (Permission denied)
这是我的FILE_PROVIDER_PATHS
<paths>
<cache-path
name="camera"
path="camera/" />
<external-path
name="external_files"
path="." />
<root-path
name="external_sd_files"
path="/storage/" />
</paths>
fun pickFile(fragment: Fragment) {
val intent = Intent()
val mimeTypes = arrayOf(
"image/*","application/msword","text/*","application/vnd.ms-xpsdocument","application/vnd.ms-works","application/xhtml+xml","application/vnd.openxmlformats-officedocument.wordprocessingml.document",// .doc & .docx
"application/vnd.ms-word.template.macroEnabled.12",// .dotm
"application/vnd.openxmlformats-officedocument.wordprocessingml.template",// .dotx
"application/vnd.ms-powerpoint","application/vnd.openxmlformats-officedocument.presentationml.presentation",// .ppt & .pptx
"application/vnd.ms-excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",// .xls & .xlsx
"application/pdf"
)
intent.type = "*/*"
intent.putExtra(Intent.EXTRA_MIME_TYPES,mimeTypes)
intent.action = Intent.ACTION_GET_CONTENT
intent.putExtra("return-data",true)
fragment.startActivityForResult(
intent,SELECT_FILE_REQUEST
)
}
onActivityResult:
override fun onActivityResult(requestCode: Int,resultCode: Int,data: Intent?) {
if (requestCode == ChatFileUtils.SELECT_FILE_REQUEST) {
if (resultCode == RESULT_OK) {
if (data != null) {
pickiT.getPath(data.data,Build.VERSION.SDK_INT)
}
}
}
super.onActivityResult(requestCode,resultCode,data)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。