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
相关产品推荐
相关产品推荐

