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

MIUI设备Android通知样式下图标显灰方块,如何实现Gmail同款适配?

解决MIUI通知图标适配问题

问题原因

MIUI的「Android通知样式」严格遵循原生Android的通知图标规范:仅支持单色(白色)、透明背景的图标,彩色图标会被系统强制转为灰色方块;而「MIUI通知样式」允许显示彩色应用图标。Gmail通过适配两套图标实现了两种样式下的正常显示。

解决方案

需要制作符合规范的单色通知图标,并在代码中根据MIUI的通知样式切换图标:

  1. 制作单色通知图标

    • 图标要求:仅白色图形,透明背景,尺寸符合各dpi标准(如mdpi 24×24、hdpi 36×36、xxhdpi 72×72等)
    • 将图标放入res/drawable-xxxhdpi等对应分辨率目录,命名例如ic_notification_white
  2. 代码中适配切换
    先实现判断MIUI当前通知样式的方法,再根据样式选择对应图标:

// 判断是否为MIUI的Android通知样式
private fun isMIUIAndroidNotificationStyle(context: Context): Boolean {
    return try {
        val isXiaomi = Build.MANUFACTURER.equals("Xiaomi", ignoreCase = true)
        if (isXiaomi) {
            val style = Settings.Global.getInt(context.contentResolver, "notification_style", 0)
            style == 1 // 1代表Android样式,0代表MIUI样式
        } else {
            false
        }
    } catch (e: Exception) {
        // 读取失败时,按原生Android O+的规范处理
        Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
    }
}

// 设置通知图标
val icon = if (isMIUIAndroidNotificationStyle(context)) {
    R.drawable.ic_notification_white // 单色通知图标
} else {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        R.mipmap.ic_launcher
    } else {
        R.drawable.ic_app_icon
    }
}
notificationBuilder.setSmallIcon(icon)

补充说明

  • 必须制作单色图标,这是实现适配的核心——Gmail也是通过提供「彩色应用图标+单色通知图标」两套资源来完成适配的
  • 若无需精准区分MIUI样式,也可直接对Android O及以上版本统一使用单色图标,原生系统及MIUI的Android样式都会正常显示,MIUI样式下系统会自动兼容彩色图标显示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 18:40:04