2010-08-12 24 views
9

Estoy intentando crear múltiples notificaciones en mi aplicación. Para identificar cada notificación de manera única, les he dado un ID de identificación único. Lo que sigue es mi código:Android: administración de múltiples notificaciones

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: Cuando se selecciona una notificación, la actividad aquí se llama pasando la intención. Deseo acceder al ID de notificación único de la notificación que se seleccionó en Pestañas. Intenté intent.putExtra() guardar el notificationId en el intento. Pero, para notificaciones múltiples, sobrescribe el notificationId y devuelve el último. No entiendo por qué sucede esto y cómo puedo evitar esta sobreescritura de notificationId.

Gracias, Chander

Respuesta

15

me dio la respuesta. Los intentos se estaban almacenan en caché en Para, hacer un nuevo intento, sólo tiene que añadir el siguiente fragmento de código:.

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

Esto hace que la única intención.

Además, alguien me sugirió el siguiente fragmento de código para hacer el intento único:

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

Es ni me ayuda, pero podría ser de ayuda a otra persona.

--Chander

7

basta con colocar el notificationId en lugar de 0 en pendingIntent.

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

El usuario también debe actualizar el siguiente código junto con el anterior para que funcione.

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