You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android使用Matisse库选取相册图片时部分图片不显示

Matisse库仅展示部分相册图片修复方案
  • 权限适配修复
    Android 13及以上系统需单独申请READ_MEDIA_IMAGES权限,Android 12及以下申请READ_EXTERNAL_STORAGE权限,Android 10可在Manifest的Application节点添加android:requestLegacyExternalStorage="true"适配分区存储。调用Matisse前必须完成存储权限的动态申请,权限未授予时只会返回部分公共目录的图片资源。
  • 调整Matisse配置,关闭默认过滤规则
    Matisse默认会过滤体积过小、格式异常的图片,如需展示全部图片可添加自定义Filter关闭过滤逻辑,优化后的代码如下:
private fun showMatisse() {
    Log.i("ChatMatisse", "showMatisse()")
    Matisse
        .from(this@OnlineChatFragment)
        .choose(MimeType.ofImage()) // 仅选择图片时优先用ofImage,过滤更精准
        .countable(true)
        .maxSelectable(1)
        // 自定义过滤规则,允许所有大小的图片展示
        .addFilter(object : Filter {
            override fun constrain(context: Context?, item: Item?): Boolean = true
            override fun filterType(): Set<MimeType> = MimeType.ofImage()
            override fun maxSize(): Long = Int.MAX_VALUE.toLong()
            override fun minSize(): Long = 0
        })
        .showSingleMediaType(true)
        .imageEngine(Glide4Engine())
        .forResult(CHOOSE_IMAGE_RESULT_CODE)
}
  • 兼容校验
    检查自定义的Glide4Engine实现是否存在额外的加载过滤逻辑,若使用官方默认引擎可升级Matisse到最新稳定版修复已知的系统版本兼容问题。如果是新保存的图片未展示,可先触发系统媒体库扫描后再调用Matisse。

内容的提问来源于stack exchange,提问作者Bekzhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 03:18:04