2013-01-18 104 views
1

我有一个报警接收器从广播中发出通知。完美运行。现在我添加了另一个通知,并且我喜欢单独提供2个通知。开始第一次通知,稍后开始第二次通知,第二次通知取消第一次通知,所以我只看到第二次通知。我需要在通知栏上有2个通知。另外删除“标志取消”不运行。两个独立的通知

我的代码(第二通知):

String ns2 = Context.NOTIFICATION_SERVICE; 
      NotificationManager mNotificationManager2 = (NotificationManager) context.getSystemService(ns2); 

      int icon = R.drawable.ic_launcherlight; 
      CharSequence tickerText = not1[x]; 
      long when = System.currentTimeMillis(); 

      Notification notification = new Notification(icon, tickerText, when); 

      CharSequence contentTitle = "Casual"; 
      CharSequence contentText = not1[x]; 

      Intent notificationIntent = new Intent("com.example.myapp", null, context, NotifyCasual.class); 
      notificationIntent.putExtra("notify", not1[x]); 
      PendingIntent contentIntent = PendingIntent.getActivity(context, 2, notificationIntent,PendingIntent.FLAG_CANCEL_CURRENT); 



      notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); 


      SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 

      String Sound = prefs.getString("sound", ""); 
notification.defaults |= Notification.DEFAULT_VIBRATE; 
      notification.defaults |= Notification.FLAG_AUTO_CANCEL; 
      notification.flags |= Notification.FLAG_AUTO_CANCEL | Notification.FLAG_SHOW_LIGHTS; 

      final int HELLO2 = 1; 

      mNotificationManager2.notify(HELLO2, notification); 
+1

你到每一个通知给不同的通知ID? – Rahil2952

+0

咦?姆姆姆......不......如何设置ID?谢谢 –

+0

我刚刚给你答案看到它,并接受它作为答案。 – Rahil2952

回答

2

你要做这样的。 当您创建通知时,请按照此操作。

对于第一个通知:

mNotificationManager.notify(1, notifyDetails); 

对于第二个通知:

mNotificationManager.notify(2, notifyDetails); 
+0

所以,我有2类:第一类与一些相同类型的通知。另一类与其他类型的通知。 –

+0

解决了!谢谢! –

+0

k很好.. – Rahil2952

0

让你的每一条通知意图通过使用setData.i使用 独特当= Calendar.getInstance()getTimeInMillis()

尝试如下。代码

/*create intent for show notification details when user clicks notification*/ 
    Intent intent =new Intent(getApplicationContext(), NotificationDetailsActivity.class); 
    intent.putExtra(NOTIFICATION_DATA, notificationData); 

    /*create unique this intent from other intent using setData */ 
    intent.setData(Uri.parse("content://"+when)); 
    /*create new task for each notification with pending intent so we set Intent.FLAG_ACTIVITY_NEW_TASK */ 
    PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK); 

    /*get the system service that manage notification NotificationManager*/ 
    NotificationManager notificationManager =(NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE); 

    /*build the notification*/ 
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(
      getApplicationContext()) 
      .setWhen(when) 
      .setContentText(notificationContent) 
      .setContentTitle(notificationTitle) 
      .setSmallIcon(smalIcon) 
      .setAutoCancel(true) 
      .setTicker(notificationTitle) 
      .setLargeIcon(largeIcon) 
      .setDefaults(Notification.DEFAULT_LIGHTS| Notification.DEFAULT_VIBRATE| Notification.DEFAULT_SOUND) 
      .setContentIntent(pendingIntent); 

    /*Create notification with builder*/ 
    Notification notification=notificationBuilder.build(); 

    /*sending notification to system.Here we use unique id (when)for making different each notification 
    * if we use same id,then first notification replace by the last notification*/ 
    notificationManager.notify((int) when, notification); 
+0

欲了解更多信息,请访问http://sanathnandasiri.blogspot.com/2012/12/android-notification-with.html – Sanath

1

为了得到你有一个新的通知,每次每次都通过不同的ID进行的PendingIntent,

所以,你必须创建一个动态ID

int id = 0; // declare globally and save the id. 
PendingIntent contentIntent = PendingIntent.getActivity(context, id, 
         notificationIntent,PendingIntent.FLAG_CANCEL_CURRENT); 
id = id + 1;