通知收件箱样式

时间:2013-10-11 03:31:22

标签: android notifications push-notification

我想创建类似即时消息应用程序的东西。如何在一个通知中显示多条消息?我可以创建在用户收到单个通知时显示的通知。但是,当用户收到多条消息时,如何使用上一条消息更新通知?如果用户没有取消通知,我应该将消息保存到数据库中并显示出来吗?或者还有其他方法可以解决这个问题吗?

以下是我的通知代码。

    NotificationManager notificationManager = (NotificationManager)
            context.getSystemService(Context.NOTIFICATION_SERVICE);
    Notification notification = new Notification(icon, "IMTest- A new event is created" , when);
    Intent notificationIntent = new Intent(context, IM_Chat.class);
    notificationIntent.putExtra("topicId", topicId);
    notificationIntent.putExtra("sender", sender);

    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
            Intent.FLAG_ACTIVITY_SINGLE_TOP);
    PendingIntent intent =
            PendingIntent.getActivity(context, 1, notificationIntent, Intent.FLAG_ACTIVITY_MULTIPLE_TASK | PendingIntent.FLAG_CANCEL_CURRENT);
    notification.setLatestEventInfo(context, topicName, "A new event ["+eventName+"] is added in "+topicName, intent);
    notification.flags |= Notification.FLAG_AUTO_CANCEL | Notification.FLAG_SHOW_LIGHTS;
    notification.defaults |= Notification.DEFAULT_SOUND;
    notification.ledARGB |= 0xff0000ff;
    notification.ledOffMS |= 1000;
    notification.ledOnMS |= 300;
    notificationManager.notify(CommunitiesappConstant.NOTIFICATION_ID, notification);

1 个答案:

答案 0 :(得分:1)

您可以使用相同的ID和构建器

更新通知

http://developer.android.com/guide/topics/ui/notifiers/notifications.html#Updating

 private NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
  private mNotificationManager =
    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

  //Different Id's will show up as different notifications
  private int mNotificationId = 1;    
  //Some things we only have to set the first time.
  private boolean firstTime = true;

  private updateNotification(String message, int progress) {
    if (firstTime) {
      mBuilder.setSmallIcon(R.drawable.icon)
      .setContentTitle("My Notification")
      .setOnlyAlertOnce(true);
      firstTime = false;
    }
    mBuilder.setContentText(message)
    .setProgress(100, progress, true);
    mNotificationManager.notify(mNotificationId, mBuilder.build());
  }