在Android中更新通知栏上现有通知(如Whatsapp、Gmail等)的通知内容。

5
当我观察whats app和gmail通知时,它们会自动更新其应用程序的现有通知,而不创建新通知。那么我该如何实现这一点?enter image description here 我已经创建了一个像上面图片中的通知。所以:
- 当通知创建时,有四条消息。 - 当我收到第五条消息时,它应该将现有通知的内容附加在图像中所示的红色内容中。
请建议我Gmail等应用程序中使用了哪些方法?
我该如何实现这一点?

通过谷歌搜索“android update notification”找到的https://developer.android.com/training/notify-user/managing.html。试试谷歌,它非常酷。 - Tim
@TimCastelijns 我尝试使用上面链接中提到的相同通知ID进行实现,但它会删除我的旧消息。 - Anil Ravsaheb Ghodake
通知内容中只显示第五条消息,其他所有消息都从内容中消失了。 - Anil Ravsaheb Ghodake
嗯,是的,您需要提供所有要显示的消息。 - Tim
是的,第五条消息应该被追加到末尾。 - Anil Ravsaheb Ghodake
1个回答

2

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

更新通知的文本,而不是整个通知

这是我的代码:

        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);
        }

下一次执行时,重置广播接收器中捕获通知操作的标志和计数。

你们能帮我解决这个问题吗?(http://stackoverflow.com/questions/41213711/android-changing-notifications-contenttext-on-a-button-click) - Thorvald
@SígvardrÓlavrsson 这个工作和你想要的一样,inboxStyle.addLine() 函数可以帮助你更新通知内容。 - Anil Ravsaheb Ghodake
这正是我需要的,我想在按钮点击时替换ContentText(该按钮位于通知中)。例如:ContentText("text text 1") -> 按钮点击 -> ContentText("text text 2") - Thorvald

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接