如何在Android PhotoPicker中进行多选MIME类型

3

我想使用Android PhotoPicker,但我需要多个MIME类型,可以是JPEG、PNG,但只能单个MIME类型,我该如何获得它?

// Launch the photo picker and let the user choose only images/videos of a
// specific MIME type, such as GIFs.
val mimeType = "image/gif"
pickMedia.launch(PickVisualMediaRequest(PickVisualMedia.SingleMimeType(mimeType)))

https://developer.android.com/training/data-storage/shared/photopicker


你试过使用"image/*"吗? - jayesh gurudayalani
@jayeshgurudayalani 可以提供,但我只需要JPEG和PNG格式的文件。 - brainer
1个回答

2
你可以按照以下方式创建PickVisualMedia的子类:
class PickImage : PickVisualMedia() {
    override fun createIntent(context: Context, input: PickVisualMediaRequest): Intent {
        val intent = super.createIntent(context, input)
        intent.putExtra(Intent.EXTRA_MIME_TYPES, arrayOf("image/jpeg", "image/png"))
        return intent
    }
}

interface Launcher {
    fun launch()
}

@Composable
fun rememberPickImageLauncherForActivityResult(onResult: (Uri?) -> Unit): Launcher {
    val launcher = rememberLauncherForActivityResult(contract = PickImage(), onResult = onResult)
    return object : Launcher {
        override fun launch() {
            launcher.launch(PickVisualMediaRequest(PickVisualMedia.SingleMimeType("*/*")))
        }
    }
}

val launcher = rememberPickImageLauncherForActivityResult { uri ->
  // read data from the uri
}

launcher.launch()

根据以下文件,在使用EXTRA_MIME_TYPES时,MIME类型应设置为“/”。这是将SingleMimeType设置为“/”的原因。

https://developer.android.com/guide/components/intents-common

EXTRA_MIME_TYPES 一个包含与您的应用程序请求的文件类型相对应的MIME类型的数组。当您使用此额外参数时,必须在setType()中设置主要的MIME类型为"/"。

启动器是什么? - brainer
@brainer 我更新了代码。 - akr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接