我正在android中开发事件提醒应用程序。在我的应用程序中,用户可以设置事件时间,并且我在指定的时间生成状态栏通知。但是在我的应用程序中,它在状态中多次生成相同的通知(通知ID)吧。请帮我怎么避免?
PendingIntent contentIntent = PendingIntent.getActivity(context, 0,i, PendingIntent.FLAG_ONE_SHOT);
notification = new Notification(R.drawable.logo, "Notification",System.currentTimeMillis());
notification.setLatestEventInfo(context,strText, "@"+strDate+ strCorrectTime,contentIntent);
notification.defaults |= Notification.DEFAULT_VIBRATE;
notification.defaults|=Notification.DEFAULT_ALL;
mNotificationManager.notify(Integer.parseInt(intent.getExtras().get("NotifyCount").toString()), notification);
这是编码..
答案 0 :(得分:2)
不要将System.currentTimeMillis()
用作通知ID。
而是定义一个常量:
public static final long TRAY_ID = 237864827364; // let your IDE generate it
并在每个mNotificationManager.notify(..)
:
( (NotificationManager)getSystemService( Context.NOTIFICATION_SERVICE ) ).cancel( TRAY_ID );
答案 1 :(得分:0)
系统时间应该正常工作。请检查你的BroadcastReceiver调用了多少时间。 它可能被称为两次。 并使用for unique id进行通知。
int notitime=new Random(System.currentTimeMillis()).nextInt();
mNotificationManager.notify(notitime, notification);
notitime是通知的唯一ID。