更新收件箱样式通知像Gmail一样

时间:2013-08-08 13:50:27

标签: android notifications

我想使用收件箱样式通知,一旦通知仍然显示在通知状态栏中,那么它应该附加到现有通知,如gmail。

但我不知道如何检测状态栏中是否显示通知,有没有办法获取通知ID

可以通过任何方式知道我的应用程序生成的通知已经显示,只需更新+1(收件箱样式)

我的想法: -

我以为我可以将通知ID存储在共享的prefrences中,我将传递挂起的intent,它将启动一个intent服务,它将清除通知存储在共享的prefrences中,并且在通知发布期间我将检查prefrences中的通知id如果它没有被清除然后我会更新它

有没有人有更好的主意?

3 个答案:

答案 0 :(得分:1)

我认为您应该拥有此链接上的所有内容:http://developer.android.com/training/notify-user/managing.html

就像你说的那样,你需要知道通知ID才能更新它。使用共享首选项是一种简单的方法,因为只需几行代码即可完成所有操作,

您的想法很好,在用户点击通知时清除首选项文件。

答案 1 :(得分:1)

请勿将其保存在首选项中。只需使用常量值作为通知ID。

static final int MY_NOTIFICATION_ID = 1;

由于每个应用程序的ID都是唯一的,因此您可以使用所需的数字。然后在通知NotifiactionManager时使用它。使用相同的代码更新您的通知。

NotificationManager.notify(MY_NOTIFICATION_ID , notification);

答案 2 :(得分:0)

你可以使用静态变量来跟踪通知ID并附加通知我的意思是堆叠通知你也可以在静态变量中保留一个数字......

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this).setSmallIcon(R.drawable.ic_launcher)
                    .setContentTitle(notificationTitle).setContentText(contentText);
            NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
            inboxStyle.setBigContentTitle(notificationTitle + " Details");

            // Moves events into the big view
            for (int i = 0; i < extrasList.size(); i++) {
                inboxStyle.addLine(extrasList.get(i).getString(mString));
            }

            if (number >= 8) {
                inboxStyle.setSummaryText("+" + (number - 7) + " more reply(s)");
            } else {
                inboxStyle.setSummaryText(contentText);
            }
            mBuilder.setStyle(inboxStyle);
            mBuilder.setNumber(number);
            mBuilder.setContentIntent(contentIntent);
            mBuilder.setAutoCancel(true);
            mNotificationManager.notify(Integer.parseInt(type), mBuilder.build());