更新安装程序,向旧邮件添加新邮件

时间:2014-10-16 08:50:25

标签: android notifications

我的应用会发送通知,但问题是如果操作栏中有一些待处理的通知,我想更新将新消息添加到旧消息的消息。

例如,如果消息为Hi!,并且设备在用户打开旧消息之前收到另一条消息(Pamela),我只想显示一条消息,并显示消息Hi!帕梅拉。

我的发送通知代码是:

    int icon = R.drawable.ic_launcher;
    long when = System.currentTimeMillis();
    NotificationManager notificationManager = (NotificationManager) this
            .getSystemService(Context.NOTIFICATION_SERVICE);

    Notification notification = new Notification(icon, msg, when);
    String title = this.getString(R.string.app_name);
    Intent notificationIntent = new Intent(getApplicationContext(),
            FirstActivity.class);
    notificationIntent.putExtra("message", msg);

    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
            | Intent.FLAG_ACTIVITY_SINGLE_TOP);

    int notifyID = 1;
    PendingIntent intent = PendingIntent.getActivity(this, notifyID,
            notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);

    notification.setLatestEventInfo(this, title, msg, intent);
    notification.flags |= Notification.FLAG_AUTO_CANCEL;

    notificationManager.notify(0, notification);

是否可以获取PendingIntent的旧消息?

提前致谢。

2 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是在第一次调用以下内容之前,通过保存已显示的内容来连接字符串:

notificationIntent.putExtra("message", msg);   
//save "Hi" , concat "Pamela" update the notification with the same notification id

保存字符串msg,然后连接下一个通知中收到的字符串。但是,在这种情况下,需要识别哪些通知包含要连接的String的部分。您可以为消息设置前缀或通过通知ID进行标识。

我感觉不是理想的做法,但却无法想到其他任何事情。

答案 1 :(得分:0)

无法从NotificationManager检索现有通知。您需要独立于通知自己跟踪它,并将未读消息保存在其他位置(可能在SQLite数据库或SharedPreferences文件中)。

您需要确定用户是否刷掉通知,这意味着您必须使用NotificationCompat.Builder类来创建通知。您可以使用setDeleteIntent方法提供一个Intent,以便在通知被刷掉时触发,此时您可以从存储它们的任何位置删除旧消息,以便新消息仅显示新消息消息。