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

如何实现类似WhatsApp的Android带用户图标推送通知

无法实现类似WhatsApp/Telegram的带用户图标推送通知

Whatsapp notification with user icon

我无法实现像WhatsApp和Telegram那样显示带用户图标的推送通知……

我尝试使用

.setLargeIcon(myLargeIcon)

但得到的布局与预期不符。我也查阅了StackOverflow上的类似问题,但均未解决。


要实现这类对话式通知,你需要使用Android的MessagingStyle,而非单纯设置LargeIcon,具体步骤如下:

  • 创建用户信息对象:定义发送消息的用户头像与名称
NotificationCompat.MessagingStyle.User user = new NotificationCompat.MessagingStyle.User(
        Uri.parse("android.resource://你的包名/drawable/用户头像资源"),
        "用户名"
);
  • 构建对话式通知样式:
NotificationCompat.MessagingStyle messagingStyle = new NotificationCompat.MessagingStyle(user)
        .addMessage("第一条消息内容", System.currentTimeMillis(), user)
        .addMessage("第二条消息内容", System.currentTimeMillis(), user); // 支持添加多条历史消息
  • 配置通知渠道(Android 8.0及以上必填):
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    NotificationChannel channel = new NotificationChannel(
            "chat_notify_channel",
            "对话通知",
            NotificationManager.IMPORTANCE_HIGH
    );
    NotificationManager notificationManager = getSystemService(NotificationManager.class);
    notificationManager.createNotificationChannel(channel);
}
  • 组装并发送通知:
Notification notification = new NotificationCompat.Builder(this, "chat_notify_channel")
        .setStyle(messagingStyle)
        .setSmallIcon(R.drawable.ic_notify_small)
        .setPriority(NotificationCompat.PRIORITY_HIGH)
        .build();

NotificationManagerCompat.from(this).notify(1, notification);

这种方式会自动将用户头像以圆形小图标形式展示在通知左侧,和WhatsApp/Telegram的布局逻辑一致。单纯使用setLargeIcon只会显示大尺寸图标,不符合对话类通知的样式规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 02:42:37