Firebase通知无法正确应用AndroidManifest中设置的部分颜色问题求助
看起来你遇到了Firebase通知颜色在Android上部分生效的奇怪问题,我之前排查过类似的情况,给你几个实用的排查和解决方向:
优先检查Android 8.0+的通知渠道配置
从Android O(API 26)开始,系统引入了通知渠道机制,渠道的颜色设置会直接覆盖你在AndroidManifest.xml里配置的默认颜色。如果你的应用之前已经创建过通知渠道,后续修改Manifest里的颜色不会自动更新渠道的配置。
解决办法:要么卸载重装应用(会清除旧的渠道配置),要么在代码里主动更新渠道的颜色。比如可以用这段代码来创建或更新渠道:if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { val channel = NotificationChannel( "your_default_channel_id", // 替换成你实际使用的渠道ID "Default Notifications", NotificationManager.IMPORTANCE_DEFAULT ).apply { description = "Default channel for Firebase notifications" color = ContextCompat.getColor(context, R.color.notification_color) } val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notificationManager.createNotificationChannel(channel) }验证颜色资源的Alpha通道
你设置的#56D1E6是没有Alpha通道的,Android的颜色资源默认会补全为#FF56D1E6(完全不透明),但有些情况下系统对不带Alpha的颜色解析可能有异常。你可以尝试在colors.xml里把颜色改成#FF56D1E6,或者直接在Manifest的meta-data里写死这个值测试:<meta-data android:name="com.google.firebase.messaging.default_notification_color" android:resource="#FF56D1E6" />清除应用缓存与数据
系统有时候会缓存旧的资源文件或通知配置,导致新的颜色不生效。你可以去设备的应用设置里找到你的应用,选择“清除缓存”和“清除数据”,然后重新启动应用发送测试通知,看看颜色是否正常显示。排除系统主题/显示设置的干扰
部分Android系统的深色模式、高对比度模式或者色彩校正功能,会自动调整通知的显示颜色。你可以暂时关闭这些系统设置,再测试通知颜色是否正常。比如在设备的「显示」设置里检查深色模式、色彩校正、护眼模式等选项。
如果以上方法都没解决,你可以尝试发送自定义通知(而非Firebase的默认通知),在NotificationCompat.Builder里手动设置颜色:
val builder = NotificationCompat.Builder(context, "channel_id") .setSmallIcon(R.drawable.ic_default_notification) .setColor(ContextCompat.getColor(context, R.color.notification_color)) .setContentTitle("Test Notification") .setContentText("Testing color #56D1E6") .setPriority(NotificationCompat.PRIORITY_DEFAULT)
如果自定义通知能正常显示颜色,那问题大概率出在Firebase默认通知的渠道配置上,重点排查渠道的更新逻辑即可。
内容来源于stack exchange

