如何管理来自同一应用程序的多个通知
问题描述:
我是android新手。我正在处理应用程序中的火灾通知。当我在状态栏上有多个通知时,我点击第二个,第一个将会打开。我只能得到第一个通知的Id。如何选择特定的通知ID我点击。这里是我的代码如何管理来自同一应用程序的多个通知
save.setOnClickListener(new OnClickListener() {
for(int i=1;i<gpPeople.size();i++)
{
Context ctx = SetReminder.this.getApplicationContext();
Intent intent = new Intent(SetReminder.this, AlarmReciever.class);
intent.putExtra("contactName",gpPeople.get(i));
intent.putExtra("id", id);//unique notification Id
PendingIntent objPendingIntent = PendingIntent.getBroadcast(SetReminder.this, i, intent, 0);
AlarmManager alarmManager = (AlarmManager)ctx.getSystemService(ctx.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, StartTime, cal.getTimeInMillis(), objPendingIntent);
}
}
AlarmReciever.java
public void onReceive(final Context context, Intent intent) {
name= extras.getString("contactName");
String id= extras.getString("id");
notificationIdentifier= Integer.parseInt(id);
Intent intent1 = new Intent(context, Notifications.class);
PendingIntent objPendingIntent = PendingIntent.getActivity(context, 0, intent1, 0);
Intent intent2= new Intent(context, CancelNotification.class);
intent2.putExtra("id", notificationIdentifier);
PendingIntent objPendingCancel = PendingIntent.getActivity(context, 0, intent2, 0);
Intent intent3= new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+phones.get(0).trim()));
PendingIntent objPendingCall = PendingIntent.getActivity(context, 0, intent3, 0);
Intent intent4= new Intent(context, Snooze.class);
intent4.putExtra("id", notificationIdentifier);
intent4.putExtra("name", name);
PendingIntent objPendingSnooze = PendingIntent.getActivity(context, 0, intent4, 0);
notification = new Notification.Builder(context).
setContentTitle(notificationTitle).
setContentText(notificationMessage+" "+name).
setAutoCancel(true).setSmallIcon(icon).
setWhen(System.currentTimeMillis()).
addAction(android.R.drawable.ic_menu_call,"call",objPendingCall).
addAction(android.R.drawable.ic_menu_delete, "Cancel", objPendingCancel).
addAction(android.R.drawable.ic_lock_idle_alarm,"Snooze",objPendingSnooze).
setContentIntent(objPendingIntent).
build();
notification.defaults |= Notification.DEFAULT_SOUND;
notification.defaults |= Notification.DEFAULT_VIBRATE;
notification.defaults |= Notification.DEFAULT_LIGHTS;
final NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(notificationIdentifier, notification);
}
当我只点击第一个将被操作的通知中的任何一个的呼叫按钮。请帮助我获取特定通知的ID。在此先感谢
答
您的“notificationIdentifier”应该是唯一的每个通知。
你可以把通知代码的方法:
public void notification (int notificationIdentifier){
notification = new Notification.Builder(context).
setContentTitle(notificationTitle).
setContentText(notificationMessage+" "+name).
setAutoCancel(true).setSmallIcon(icon).
setWhen(System.currentTimeMillis()).
addAction(android.R.drawable.ic_menu_call,"call",objPendingCall).
addAction(android.R.drawable.ic_menu_delete, "Cancel", objPendingCancel).
addAction(android.R.drawable.ic_lock_idle_alarm,"Snooze",objPendingSnooze).
setContentIntent(objPendingIntent).
build();
notification.defaults |= Notification.DEFAULT_SOUND;
notification.defaults |= Notification.DEFAULT_VIBRATE;
notification.defaults |= Notification.DEFAULT_LIGHTS;
final NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(notificationIdentifier, notification);
};
并调用该方法,你有希望:
notification (notificationIdentifier);
如果没有意义,您可以使用该ID随机数:
Random rand = new Random();
notificationIdentifier = rand.nextInt(1000000) + 1;