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

标签 android notifications android-notifications

当我观察 whats app 和 gmail 通知时,它们会自动更新现有应用程序的通知,而无需创建新通知。 那么我该如何实现呢? enter image description here

我已经创建了一个通知,如上图所示。所以

  • 当 Notification 创建时,有 4 条消息。

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

请告诉我在类似 Gmail 的应用程序中使用了哪些方法?

我怎样才能做到这一点?

最佳答案

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

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

并为下一次执行重置标志并在捕获通知操作的广播接收器中计数

关于android - 更新通知栏上现有通知的通知内容,如 Android 中的 Whatspp、Gmail 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39143099/

相关文章:

android - 无法使用 Mockito 测试使用协程和挂起函数的代码

android - 异常处理异步线程队列java.lang.UnsupportedOperationException

用于跟踪用户通知或事件的数据库(类似于 Facebook)

android - 如何在 Android O 中动态更改通知声音

Android:如何创建自定义通知并编辑其布局以编程方式添加 View ?

android - 如何在Android Studio中添加Android POI?

java - Android Activity 在非常简单的设置中泄漏

cocoa-touch - 为什么不总是调用已注册的 UIDeviceOrientationDidChangeNotification?

java - 不幸的是,App已停止(Android开发)

push-notification - 使用 getStream.io 推送通知