我正在编写一个应用程序,在这个应用程序中我需要设置多个具有相同意图的通知,就像用户点击任何通知时打开我的应用程序一样。
所有通知都在不同的时间和日期发出,没有任何数据,但问题是,如果我在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
如果有人知道该怎么做,请帮助我。
答案 0 :(得分:1)
发布要在状态栏中显示的通知。如果您的应用程序已经发布了具有相同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);
它可能对你有帮助。