同一意图的多个通知

时间:2013-02-22 10:22:08

标签: java android

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

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

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

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

 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花了很多时间在谷歌上搜索并找到了一些解决方案,但他们在我这里工作并不是其中一些的链接:

android pending intent notification problem

Multiple notifications to the same activity

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

3 个答案:

答案 0 :(得分:1)

Quote

  

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

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

更新如果这没有帮助,您仍然可以创建不相等的Intents,同时具有相同的效果。

答案 1 :(得分:0)

这可能会有所帮助

notif.flags | = Notification.FLAG_ONGOING_EVENT;

通知永远不会关闭...

答案 2 :(得分:0)

尝试设置如下:

  contentIntent=PendingIntent.getActivity(p_context, i, new Intent(context, MenuScreen.class),PendingIntent.FLAG_CANCEL_CURRENT);

它可能对你有帮助。