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