android - 我如何使用 ActivityResultLauncher.GetContent() 请求多个 MIME 类型?

标签 android mime-types

我正在尝试从用户那里检索一个既可以是图像也可以是 pdf 的文件,使用

registerForActivityResult(ActivityResultContracts.GetContent()) { file: Uri ->
   ......
}.launch(<mimetypes>)

我已经从另一个问题的答案中尝试了 "image/*|application/pdf" 但它没有用,在使用 registerForActivityResult 时有没有办法请求多个 MIME 类型?

最佳答案

这是我的示例代码,在 api 31 中测试

var resultGalleryLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
        if (result.resultCode == Activity.RESULT_OK) {
            val intent: Intent? = result.data
            if (intent != null) {
                intent.data?.let { selectedImageUri ->
                     ....  
                    }
                }
            } else {
                Timber.e(" >>> error selected image from gallery by intent")
            }
        }
    }


fun galleryLauncher() {
    val intent = Intent(Intent.ACTION_GET_CONTENT, MediaStore.Images.Media.EXTERNAL_CONTENT_URI).apply {
        type = "image/*"
        action = Intent.ACTION_GET_CONTENT
        putExtra(Intent.EXTRA_MIME_TYPES, arrayOf("image/jpeg", "image/png", "image/jpg"))
        putExtra(Intent.EXTRA_ALLOW_MULTIPLE, false)
    }
    resultGalleryLauncher.launch(intent)
}

关于android - 我如何使用 ActivityResultLauncher.GetContent() 请求多个 MIME 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69360764/

相关文章:

c# - Xamarin 中的 MVVMCross 模式中的 RecyclerView 复选框

java - 如何将选定目录中的文件放入arraylist Android studio

ruby-on-rails-3 - Rails 3 网络字体 (woff) mime 类型

javascript - 将 HTML 从 servlet 发送到 js 应用程序会损坏 Firefox 中的数据

java - MessagingException : MIME part of type "multipart/mixed" contains object of type java. io.File 而不是 MimeMultipart

javascript - 如何在 Django 中设置 JavaScript 文件的内容类型

android - java.beans.VetoableChangeListener无法解析

android - 机器人安装

android - 源附件不包含文件 Layoutinflater.class 的源

java - 属性文件的 MIME 类型是什么?