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

如何修改安卓系统通知托盘中的通知图标颜色

Android 5.0(API 21)及以上系统对通知小图标有强制规范,你配置的com.google.firebase.messaging.default_notification_color不会直接修改图标本身的填充色,需要按以下步骤排查修改:

  • 第一步:检查通知图标规范
    你使用的ic_stat_e_ai_notif_icon必须是仅包含白色像素和透明区域的单色资源,不能自带其他颜色。如果是矢量图,要确保所有图形的fillColor设为白色,不要额外添加tint属性;如果是位图,所有非透明区域必须为纯白色,系统只会保留图标的轮廓信息,再用指定颜色对轮廓进行着色。
  • 第二步:区分Firebase通知类型适配
    • 如果发送的是Firebase notification类型消息,应用在后台时会自动读取manifest里的配置生效,你当前的meta-data配置是正确的,可检查@color/colorPrimary是否在colors.xml中正确定义,没有被夜间模式、多语言等其他资源配置覆盖。
    • 如果发送的是Firebase data类型消息,或是应用在前台时接收通知,需要你在FirebaseMessagingService的onMessageReceived回调中手动构建通知,此时manifest中的默认颜色配置不会自动生效,必须调用setColor方法手动指定颜色,示例代码如下:
// Java 示例
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, YOUR_NOTIFICATION_CHANNEL_ID)
        .setSmallIcon(R.drawable.ic_stat_e_ai_notif_icon)
        // 手动设置通知图标着色颜色,和manifest配置的colorPrimary保持一致即可
        .setColor(ContextCompat.getColor(context, R.color.colorPrimary))
        .setContentTitle("通知标题")
        .setContentText("通知内容")
        .setPriority(NotificationCompat.PRIORITY_DEFAULT);
// Kotlin 示例
val builder = NotificationCompat.Builder(context, YOUR_NOTIFICATION_CHANNEL_ID)
    .setSmallIcon(R.drawable.ic_stat_e_ai_notif_icon)
    .setColor(ContextCompat.getColor(context, R.color.colorPrimary))
    .setContentTitle("通知标题")
    .setContentText("通知内容")
    .setPriority(NotificationCompat.PRIORITY_DEFAULT)
  • 第三步:缓存清理
    如果修改后仍然不生效,可卸载应用重新安装测试,避免本地旧的通知缓存导致新配置不生效。
  • 额外说明:Android 5.0及以上不允许通知小图标使用彩色样式,如果你需要展示彩色图标,可调用setLargeIcon方法设置通知大图标,大图标可自定义为任意彩色图片,不受规范限制。

内容的提问来源于stack exchange,提问作者Ricardo Oscar Kanitz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:15:03