如何使用 Intent.ACTION_OPEN_DOCUMENT 过滤 JSON 文件?

use*_*730 2 android json android-intent

当我尝试打开.json文件时

startActivityForResult(Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
    addCategory(Intent.CATEGORY_OPENABLE)
    type = "application/json"
}, 0)
Run Code Online (Sandbox Code Playgroud)

选择器列出所有类型的文件,而不仅仅是.json文件。值得一提的是,所有文件都是灰色的,我无法选择任何文件,甚至我的.json文件也无法选择。

但是,当我更改application/json为 时*/*,文件不会变灰,我可以打开它们。

ACTION_GET_CONTENT代替ACTION_OPEN_DOCUMENT的行为是一样的。

为什么类型设置没有按预期工作?如何使它工作?

Vik*_*tel 5

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

MimeTypeMap.getSingleton().getMimeTypeFromExtension("json");
Run Code Online (Sandbox Code Playgroud)

返回null

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