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

FCM接收器构建通知时图标显示为白色方块的问题求助

解决FCM通知图标显示白色方块的问题

Hey,我来帮你搞定这个问题!你遇到的白色方块其实是Android系统的规范限制导致的,具体原因和解决方案如下:

问题根源

从Android 5.0(API Level 21)开始,系统对通知的smallIcon有硬性要求:必须是白色图形、透明背景的单色调图标。如果你的PNG应用图标是彩色或者带不透明背景的,系统会自动将它处理成白色方块,这就是你看到的情况。

具体修复步骤

1. 准备符合规范的通知图标

  • 制作一个仅包含白色图形、背景完全透明的PNG图标(推荐用VectorDrawable矢量图,适配各种屏幕分辨率更省心)
  • 将图标放入项目的res/drawable-*dpi对应分辨率目录,命名比如ic_notification.png
  • 划重点:别直接拿带颜色的应用图标当通知小图标用!

2. 修改代码适配系统版本

如果想兼顾低版本系统(Android 5.0以下)的彩色图标显示,同时满足高版本规范,可以这样修改代码:

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context);

// 针对不同系统版本设置图标
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    // Android 5.0+ 使用合规的单色调通知图标
    mBuilder.setSmallIcon(R.drawable.ic_notification);
    // 可选:给图标设置背景色(如果需要让图标区域有底色)
    mBuilder.setColor(ContextCompat.getColor(context, R.color.your_notification_color));
} else {
    // 低版本系统可以继续用原应用图标
    mBuilder.setSmallIcon(R.drawable.icon);
}

mBuilder.setContentTitle("Your chat is going to expire tomorrow!");

// 以下原有代码保持不变
Intent resultIntent = new Intent(this, main_activity.class);
resultIntent.putExtra("launchedFromNotification", true);

TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(main_activity.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(
        0, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(resultPendingIntent);

NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(MESSAGE_NOTIFICATION_ID, mBuilder.build());

额外小贴士

  • 如果你是通过Firebase控制台发送通知,别忘了控制台里设置的通知图标也得符合规范,否则FCM推送时会覆盖你代码里设置的图标
  • 用Android Studio自带的Image Asset Studio生成标准通知图标超方便:右键项目里的res目录 → New → Image Asset → 选择Notification Icon类型,跟着向导一步步生成就行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:11:24