2015-03-02 61 views
1

我是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。在此先感谢

回答

0

您的“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; 
相关问题