更新Android中通知栏上的现有通知的通知内容,如Whatspp,Gmail等

时间:2016-08-25 10:40:43

标签: android notifications android-notifications

当我观察到最新的app和gmail通知时,他们会自动更新应用程序的现有通知,而不会创建新的应用程序。 那我怎么能做到这一点? enter image description here

我已经在上面的图像中创建了一个通知。所以

  • 当时通知创建时有四条消息。

  • 所以当我收到第五条消息时,它应该附加现有通知的内容,如图中红色所示。

请建议我在Gmail中使用哪种方法?

我如何才能实现这一目标?

1 个答案:

答案 0 :(得分:2)

我的问题通过以下链接解决

Update text of notification, not entire notification

这是我的代码: -

        PendingIntent pendingIntent = PendingIntent.getBroadcast(objContext, (int) (Math.random() * 100), intent, PendingIntent.FLAG_CANCEL_CURRENT);
        NotificationManager manager = (NotificationManager) objContext.getSystemService(Context.NOTIFICATION_SERVICE);
        if (firstTime) {
            intCount++;
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                inboxStyle = new Notification.InboxStyle();
            }
            Bitmap icon = BitmapFactory.decodeResource(objContext.getResources(), R.drawable.ic_launcher);
//            Notification.Builder builder = new Notification.Builder(objContext);
            builder = new Notification.Builder(objContext);
            builder.setAutoCancel(true);
            builder.setContentTitle("Studyboard");
            builder.setDefaults(Notification.DEFAULT_ALL);
            builder.setSmallIcon(R.drawable.ic_launcher_transparent_s);
            builder.setLargeIcon(icon);
            builder.setWhen(Calendar.getInstance().getTimeInMillis());
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                builder.setStyle(inboxStyle);
            }
            builder.setOngoing(false);
            builder.setContentIntent(pendingIntent);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                builder.build();

                inboxStyle.addLine(senderFullName + " : " + strDisplayMsg);
                inboxStyle.setSummaryText("");
            }
            System.out.println("Creating New Notification");
            Notification myNotication = builder.getNotification();
            manager.notify("Example", 12345, myNotication);
            firstTime = false;

        } else {
            intCount++;
            builder.setWhen(Calendar.getInstance().getTimeInMillis());
            System.out.println("Not Creating");
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                builder.setStyle(inboxStyle);
            }
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                if (intCount <= 3)
                    inboxStyle.addLine(senderFullName + " : " + strDisplayMsg);
                if (intCount > 3 && intCount - 3 > 0)
                    inboxStyle.setSummaryText("+" + (intCount - 3) + " more messages");
            }
            Notification myNotication = builder.getNotification();
            manager.notify("Example", 12345, myNotication);
        }

对于下次执行重置标志并在广播接收器中计数,以捕获通知

的操作