如何在Jetpack Compose Photo Picker中筛选仅选择PNG图片?
在Jetpack Compose中使用Photo Picker筛选仅PNG图片
要将Photo Picker的选择范围限制为仅PNG图片,你需要指定自定义媒体类型,而非使用默认的ImageOnly(它会包含所有图片格式)。具体实现如下:
修改核心代码
将按钮点击事件中启动Photo Picker的逻辑,替换为指定image/png MIME类型的请求:
val multiplePhotoPickerLauncher = rememberLauncherForActivityResult( contract = ActivityResultContracts.PickMultipleVisualMedia(), onResult = { uris -> // 处理选中的PNG图片URI }) Button( modifier = Modifier .fillMaxWidth() .bounceClick(), colors = ButtonDefaults.buttonColors( containerColor = White, disabledContainerColor = White80, disabledContentColor = White ), onClick = { // 定义仅允许PNG的媒体类型 val pngOnlyMediaType = ActivityResultContracts.PickVisualMedia.ImageAnd("image/png") // 启动筛选后的Photo Picker multiplePhotoPickerLauncher.launch(PickVisualMediaRequest(pngOnlyMediaType)) } ) { Text( color = Black80, text = "${attachments.size} / 10" ) }
关键说明
ActivityResultContracts.PickVisualMedia.ImageAnd("image/png"):该方法会创建一个仅匹配PNG格式的媒体类型筛选器,系统Photo Picker将只展示符合此MIME类型的文件。- 若需支持多种特定格式(如同时兼容PNG和WebP),可传入多个MIME类型,示例:
ImageAnd("image/png", "image/webp")。
内容的提问来源于stack exchange,提问作者Kalpesh Doru
相关产品推荐
相关产品推荐

