首页 > 解决方案 > 如何使用 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行为是相同的。

为什么类型设置没有按预期工作?如何让它发挥作用?

标签: androidjsonandroid-intent

解决方案


Android 不支持json作为 MIME 类型。您可以查看MimeUtils的源代码。

MimeTypeMap.getSingleton().getMimeTypeFromExtension("json");

返回null

您可以使用"application/octet-stream"而不是"application/json" . 它会在其他文件中显示“*.json 文件,尽管它会过滤掉图像、视频、音乐和文本文件。


推荐阅读