Intent ACTION_OPEN_DOCUMENT:浏览多种MIME类型

gio*_*ozh 2 android android-intent mime-types

我的目的是让用户选择图像:

 fun launchChooseFileIntent(callerFragment: BaseFragment, REQUEST_CODE: Int) {
    val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
        addCategory(Intent.CATEGORY_OPENABLE)
        type = "image/*,"
    }

    startActivityForResult(intent, REQUEST_CODE)
}
Run Code Online (Sandbox Code Playgroud)

现在我需要用户可以选择图像和 pdf 文档。我尝试更改类型字符串,例如

type = "image/*,application/pdf"
Run Code Online (Sandbox Code Playgroud)

或者喜欢

type = "image/*|application/pdf"
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

我也尝试添加额外的意图,例如

putExtra(Intent.EXTRA_MIME_TYPES, arrayOf("image/*", "application/pdf"))
Run Code Online (Sandbox Code Playgroud)

但应用程序崩溃了。

我该如何解决它?

gra*_*121 6

您的问题的答案在这里

这是我的示例代码,在 api 28 中进行了测试。

            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_OPEN_DOCUMENT);
            intent.addCategory(Intent.CATEGORY_OPENABLE);
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            String[] mimeTypes = {"application/pdf", "text/csv", "text/plain"};
            intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
            intent.setType("*/*");
            intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes);

            startActivityForResult(Intent.createChooser(intent, dialogTitle), requestCode);
Run Code Online (Sandbox Code Playgroud)