Java 基于相同意图的多个通知

Java 基于相同意图的多个通知,java,android,Java,Android,我正在编写一个应用程序,在此应用程序中,我需要设置多个具有相同意图的通知,就像用户点击任何通知时打开我的应用程序一样 所有通知都在不同的时间和日期发出,没有任何数据,但问题是,如果我在03:27 PM和03:28 PM设置了两个通知,那么第一个通知(03:27 PM)将被取消(被第二个通知覆盖),第二个通知将正常工作 我目前正在使用此代码来实现此目标: 此方法用于设置来自活动的通知: public static void setNotificationOnDateTime(Context co

我正在编写一个应用程序,在此应用程序中,我需要设置多个具有相同意图的通知,就像用户点击任何通知时打开我的应用程序一样

所有通知都在不同的时间和日期发出,没有任何数据,但问题是,如果我在03:27 PM和03:28 PM设置了两个通知,那么第一个通知(03:27 PM)将被取消(被第二个通知覆盖),第二个通知将正常工作

我目前正在使用此代码来实现此目标:

此方法用于设置来自活动的通知:

 public static void setNotificationOnDateTime(Context context, long fireTime)
     {
         int requestID = (int) System.currentTimeMillis();

         AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
         Intent i = new Intent(context, NotificationReceiver.class);

         PendingIntent pi = PendingIntent.getBroadcast(context, requestID, i, 0);
         am.set(AlarmManager.RTC_WAKEUP, fireTime, pi);
     }
我的NotificationReceiver类如下所示:

 NotificationManager nm;

 @Override
 public void onReceive(Context context, Intent intent) {
     Log.w("TAG", "Notification fired...");

     nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

     PendingIntent contentIntent;

     Bundle bundle = intent.getExtras().getBundle("NotificationBundle");
     if(bundle == null)
     {
         contentIntent = PendingIntent.getActivity(context, 0,
                 new Intent(context, SplashScreen.class), 0);
     }

     else
     {
         contentIntent = PendingIntent.getActivity(context, 0,
                 new Intent(context, MenuScreen.class)
         .putExtra("NotificationBundle", bundle), 0);
     }

     Notification notif = new Notification(R.drawable.ic_launcher,
             "Crazy About Android...", System.currentTimeMillis());
     notif.setLatestEventInfo(context, "Me", "Message test", contentIntent);
     notif.flags |= Notification.FLAG_AUTO_CANCEL;
     nm.notify(1, notif);
 }
我alerady花了很多时间在谷歌上,找到了一些解决方案,但它们对我不起作用。以下是其中一些解决方案的链接:

如果有人知道怎么做,请帮助我。

这可能会有帮助

notif.flags |=Notification.FLAG_持续事件

通知将永远不会关闭…

这可能会有所帮助

notif.flags |=Notification.FLAG_持续事件

通知将永远不会关闭…

请尝试如下设置:

它可能会对您有所帮助。

请尝试设置如下:

这可能会对你有所帮助。

发布要在状态栏中显示的通知。如果应用程序已发布具有相同id的通知,但尚未取消,则该通知将替换为更新的信息

但是您总是使用
1
作为
id
参数。在发布多个通知时使用唯一ID

更新如果这没有帮助,您仍然可以创建意图,这些意图在具有相同效果的同时,不会被比较为相等。

发布要在状态栏中显示的通知。如果应用程序已发布具有相同id的通知,但尚未取消,则该通知将替换为更新的信息

但是您总是使用
1
作为
id
参数。在发布多个通知时使用唯一ID


更新如果这没有帮助,您仍然可以创建意图,这些意图在具有相同效果的同时不进行比较。

正如您所建议的,我设置了此标志并同时收到两个通知。我设置了两个通知,并在第二次通知时获得两个通知。这就是您的要求?好吗?正如你所建议的,我设置了这个标志,同时收到两个通知。我设置了两个通知,并在第二次通知时获得两个通知。这就是您的要求?好吗?谢谢你提供的宝贵信息,但是我如何在NotificationReceiver类中更改通知id呢。当接收方收到通知时调用onReceive。我说的对吗?@Pari你基本上已经在做这样一个把戏了,尽管在一个被浪费的地方:你生成一个
requestID
,这个id很可能是唯一的,然后把它传递给
pendingent.getBroadcast()
,但根据文档,这是“当前未使用的”。您可以对
notify()
id
参数执行相同的操作。但是,只有当您不必根据通知的ID识别通知时,这才有意义(在这种情况下,您需要连续的ID或您发布的ID列表或类似的内容)。但这会解决您的问题。@Pari我还更新了我的答案,并提供了一个额外的建议。谢谢您提供的宝贵信息,但是我如何在NotificationReceiver类中更改通知id。当接收方收到通知时调用onReceive。我说的对吗?@Pari你基本上已经在做这样一个把戏了,尽管在一个被浪费的地方:你生成一个
requestID
,这个id很可能是唯一的,然后把它传递给
pendingent.getBroadcast()
,但根据文档,这是“当前未使用的”。您可以对
notify()
id
参数执行相同的操作。但是,只有当您不必根据通知的ID识别通知时,这才有意义(在这种情况下,您需要连续的ID或您发布的ID列表或类似的内容)。“但这会解决你的问题。”帕里我还更新了我的答案,并提出了一个额外的建议。
  contentIntent=PendingIntent.getActivity(p_context, i, new Intent(context, MenuScreen.class),PendingIntent.FLAG_CANCEL_CURRENT);