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

Flutter问题:Android通知图标显示为白色方块

解决Android推送通知图标显示白色方块问题

Android通知图标有严格规范:必须是透明背景+白色单色图形,这和启动图标(尤其是自适应图标)的要求完全不同。flutter_launcher_icons仅负责生成应用启动图标,不会自动生成符合通知要求的图标,这就是问题的核心原因。按以下步骤解决:

  • 第一步:制作合规的通知图标
    用设计工具导出透明背景、白色前景的图标,生成对应不同分辨率的版本:

    • mdpi: 24×24px
    • hdpi: 36×36px
    • xhdpi: 48×48px
    • xxhdpi: 72×72px
    • xxxhdpi: 96×96px
      将图标命名为ic_notification.png,分别放到Android项目的android/app/src/main/res/drawable-mdpi/、drawable-hdpi/等对应目录下(无对应目录则手动创建)。
  • 第二步:配置全局默认通知图标(可选但推荐)
    在AndroidManifest.xml的<application>标签内添加元数据,指定全局默认通知图标:

    <!-- 适配Firebase推送的默认图标 -->
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_icon"
        android:resource="@drawable/ic_notification" />
    <!-- 适配普通本地通知的默认图标 -->
    <meta-data
        android:name="android.app.default_notification_icon"
        android:resource="@drawable/ic_notification" />
    
  • 第三步:在代码中明确指定通知小图标
    确保创建通知时,设置的小图标是你刚添加的合规资源,而非启动图标:

    NotificationCompat.Builder builder = NotificationCompat.Builder(context, channelId)
        .setSmallIcon(R.drawable.ic_notification) // 替换为你的通知图标资源
        .setContentTitle("通知标题")
        .setContentText("通知内容");
    
  • 额外检查:后台推送场景
    若使用Firebase等后台推送服务,需确认推送payload或控制台中指定的图标名称与你添加的资源一致,避免因配置错误导致图标异常。

注意:如果图标前景不是纯白色,Android系统会强制将其渲染为白色,但如果原图标存在非透明背景或复杂色彩,就会出现白色方块的问题,务必保证图标是纯白色+透明背景的单色样式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:35:22