Android 如何允许在文件选择器 Intent 中选择 CSV

How to allow selection of CSV in a File Chooser Intent in Android

经过一天的努力,我发现这段代码“几乎”有效:

    private fun showFileChooser() {
        val mimeTypes = arrayOf(
            "text/csv",
            "text/plain",
            "application/csv",
            "application/vnd.ms-excel",
            "application/excel",
            "application/x-excel",
            "application/x-msexcel"
        )

        val intent = Intent(Intent.ACTION_GET_CONTENT)
        intent.addCategory(Intent.CATEGORY_OPENABLE)
        intent.type = "text/csv" //if (mimeTypes.size == 1) mimeTypes[0] else "*/*"
        if (mimeTypes.isNotEmpty())
            intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes)
        startActivityForResult(
            Intent.createChooser(intent, "choose file"),
            MY_RESULT_CODE_FILECHOOSER
        )
    }

问题是 *.csv 个文件不能 selected/opened(this 是为另一个问题截取的屏幕截图,您可以在其中看到文件的显示方式...它是浅灰色的就像它被禁用一样,实际上它不能被 selected) 感谢 mime 类型 text/plain 我能够 select *.txt 文件。
我在 Whosebug 上发现了很多帖子,其中的建议不起作用(可能不再起作用)。
有什么解决办法吗? 问候

使用EXTRA_MIME_TYPES时需要调用setType("*/*")。请参阅共同意图的 OpenFile 部分。

此外,您应该考虑使用 Activity Results API instead of startActivityForResult() since it provides more type safety and the latter has been deprecated. The one you are looking for is ActivityResultContracts.GetContent