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

Android 10模拟器推送通知小图标不显示问题求助

Android 10(Target SDK 29)推送通知小图标不显示的排查解决方案

我之前也碰到过几乎一模一样的问题,在Android 10模拟器上折腾了好一阵才搞定,给你几个针对性的排查点和解决办法:

  • 重新检查图标资源的规范性
    别只看单个尺寸的图标,要确保所有mipmap-xxxhdpi、mipmap-xxhdpi等目录下都有对应的纯白色、透明背景图标,而且图标不能有任何额外的阴影、边框或者杂色。最稳妥的方式是用Android Studio的File > New > Image Asset工具,选择「Notification Icon」类型重新生成,这个工具会自动生成符合系统要求的多尺寸图标包。

  • 排查Notification Channel的配置
    Target SDK 29强制要求使用Notification Channel,如果你没正确创建或注册Channel,也可能导致图标异常。检查你的Channel创建代码是否正确,并且CHANNEL_ID和Builder里的完全一致:

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        NotificationChannel channel = new NotificationChannel(CHANNEL_ID, "你的渠道名称", NotificationManager.IMPORTANCE_DEFAULT);
        channel.setDescription("渠道描述");
        NotificationManager notificationManager = context.getSystemService(NotificationManager.class);
        notificationManager.createNotificationChannel(channel);
    }
    

    另外,模拟器可能缓存旧的Channel配置,建议卸载应用后重启模拟器,再重新安装测试。

  • FCM推送的额外注意点
    如果你用的是Firebase Cloud Messaging,除了Manifest里的meta-data配置,还要确认后端推送时没有指定icon字段——如果后端设置了这个参数,会直接覆盖你本地的小图标设置。同时,确保Firebase控制台的推送模板里也没有自定义图标。

  • 模拟器缓存与权限问题
    Android 10模拟器偶尔会有通知缓存bug,试试这些操作:

    • 完全卸载应用,在模拟器设置里清除应用的所有残留数据
    • 重启模拟器后重新安装应用
    • 检查模拟器里应用的通知权限:确保权限已开启,且没有被设置为「隐藏通知图标」
  • 代码细节调整
    试试把创建Builder的上下文换成getApplicationContext(),避免Activity上下文可能带来的异常;另外,确认你的setSmallIcon调用没有被后续的代码覆盖(比如不小心又调用了一次setSmallIcon设置成其他资源)。

我当时的问题是后端推送时误加了icon参数,加上模拟器缓存的旧Channel配置,才导致图标一直异常。你按上面的步骤逐一排查,应该能解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:29:59