2010-08-12 20 views
9

Sto tentando di creare più notifiche nella mia applicazione. Per identificare ogni notifica in modo univoco, ho dato loro un ID di identificazione univoco. In seguito è il mio codice:Android: gestione di più notifiche

private void updateNotification(int notificationId, int clockStatusID, CharSequence text) { 
//notificationManager.cancel(notificationId); 
// throws up an ongoing notification that the timer is running 
Log.i("TIMERCOUNT", "Notification id: " + notificationId); 
Notification not = new Notification(clockStatusID, // the 
    // icon 
    // for 
    // the 
    // status 
    // bar 
    text, // the text to display in the ticker 
    System.currentTimeMillis() // the timestamp for the 
    // notification to appear 
); 
Intent intent = new Intent(); 
intent.putExtra("notificationID", notificationId); 
intent.setAction("actionstring" + System.currentTimeMillis()); 
intent.setClassName("com.chander.time.android.activities", 
"com.chander.time.android.activities.Tabs"); 


not.setLatestEventInfo(self, 
    getText(R.string.timer_notification_title), 
    getText(R.string.timer_on_notification_text), PendingIntent 
    .getActivity(this, 0, intent, 
     PendingIntent.FLAG_UPDATE_CURRENT)); 

not.flags += Notification.FLAG_ONGOING_EVENT; 
not.flags += Notification.FLAG_NO_CLEAR; 
notificationManager.notify(notificationId, not); 
} 

Problema: Quando si seleziona una notifica, l'attività Tabs è chiamata passando l'intento. Voglio accedere alla notifica unicaId della notifica che è stata selezionata in Schede. Ho provato intent.putExtra() per salvare la notifica ID nell'intento. Ma, per più notifiche, sovrascrive la notifica e restituisce l'ultima. Non capisco perché questo sta accadendo e come posso evitare questa sovrascrittura di notificationId.

Grazie, Chander

risposta

15

ho avuto la risposta. Gli intenti sono stati sempre memorizzati nella cache in A, fare un nuovo intento, basta aggiungere il seguente pezzo di codice:.

saveCallIntent.setData((Uri.parse("custom://"+System.currentTimeMillis()))); 

Questo rende l'unico intento.

Inoltre, qualcuno mi ha suggerito il seguente pezzo di codice per rendere l'unico intento:

saveCallIntent.setAction("actionstring" + System.currentTimeMillis()); 

Mi non ha ancora aiutare, ma potrebbe essere di aiuto a qualcun altro.

--Chander

7

è sufficiente posizionare il notificationId invece di 0 a pendingIntent.

PendingIntent.getActivity(this, notificationId, intent,PendingIntent.FLAG_UPDATE_CURRENT)); 

L'utente deve inoltre aggiornare il codice seguente insieme con quello superiore per farlo funzionare.

mNotificationManager.notify(notificationId, mBuilder.build());