将多个 Mime 类型传递给 ActivityResultLauncher.launch()

问题描述

我有以下代码

val getContent = registerForActivityResult(ActivityResultContracts.GetContent()) { uri: Uri? ->
    //Some code here..
}

还有别的地方,

getContent.launch("application/vnd.openxmlformats-officedocument.wordprocessingml.document")

我可以成功选择 docx 文件。我需要选择 pdf 或 doc 或 text 或 docx 而只是能够选择一种(此处为 docx)。

解决方法

我建议使用 OpenDocument 而不是 GetContent

val documentPick =
    registerForActivityResult(ActivityResultContracts.OpenDocument()) { result ->
        // do something 
    }

在启动 Intent 时,只需添加您想要获取的 mime 类型

documentPick.launch(
            arrayOf(
                "application/pdf","application/msword","application/ms-doc","application/doc","application/vnd.openxmlformats-officedocument.wordprocessingml.document","text/plain"
            )
        )

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...