android - 如何使用 Intent.ACTION_OPEN_DOCUMENT 过滤 JSON 文件?
问题描述
当我尝试打开.json
文件时
startActivityForResult(Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
addCategory(Intent.CATEGORY_OPENABLE)
type = "application/json"
}, 0)
选择器列出所有类型的文件,而不仅仅是.json
文件。值得一提的是,所有文件都是灰色的,我无法选择任何文件,甚至我的.json
文件也无法选择。
但是,当我更改application/json
为时*/*
,文件不会变灰,我可以打开它们。
用ACTION_GET_CONTENT
而不是ACTION_OPEN_DOCUMENT
行为是相同的。
为什么类型设置没有按预期工作?如何让它发挥作用?
解决方案
Android 不支持json
作为 MIME 类型。您可以查看MimeUtils的源代码。
MimeTypeMap.getSingleton().getMimeTypeFromExtension("json");
返回
null
;
您可以使用"application/octet-stream"
而不是"application/json"
. 它会在其他文件中显示“*.json 文件,尽管它会过滤掉图像、视频、音乐和文本文件。
推荐阅读
- javascript - 从 Web 应用程序导出/导入 RSA 密钥对
- ruby-on-rails - Rails 4.2 中如何计算指纹摘要
- ios - 一次尝试失败后继续在 swift 中尝试捕获
- java - Java教程不完整的表达式定义
- vuejs2 - 在插件 Promise 中启动 Quasat/Vue 应用程序
- ios - 如何通过按钮更新分配给自定义单元格中索引路径的核心数据
- cookies - 在同一个应用程序中同时使用 cookie 和令牌不同的 Web api 端点
- ios - 如何获取时隙是否在另一个时隙中?
- hadoop - Kafka 连接器 - 从 Kafka 到 Hadoop
- excel - 解析 Excel 数据引发“文件错误”