Actualizar una notificación en curso en silencio

Tengo un servicio que se conecta a otros dispositivos de forma inalámbrica. Cuando el servicio está habilitado, tengo una notificación en curso que indica que está habilitada.

Una vez habilitado el servicio, el usuario se conecta a otro dispositivo. En este momento, me gustaría actualizar mi notificación en curso para indicar el nombre del dispositivo al que se ha conectado. Esto es bastante fácil de hacer llamando a startForeground(ONGOING_NOTIFICATION, notification) nuevo con la información actualizada; Sin embargo esto parpadea la notificación en la barra cada vez que se llama. Lo que realmente me gustaría es la notificación para actualizar en silencio en segundo plano sin parpadear en la barra de notificación para que el usuario no sabe la diferencia hasta que él o ella abre el área de notificación a buscar.

¿Hay alguna manera de actualizar la notificación sin llamar a startForeground() ?

Este comportamiento sólo se produce en Honeycomb. Los dispositivos de pan de jengibre (y supongo que Froyo, etc.) se comportan de la manera deseada.

Yo también experimentado este problema, y ​​con la ayuda de comentarios anteriores y un poco de excavación he encontrado la solución.

Si no desea que las notificaciones parpadeen al actualizarse o que continúe la barra de estado del dispositivo, debe:

  • Utilice setOnlyAlertOnce (true) en el constructor
  • Utilice SAME Builder para cada actualización.

Si usted utiliza un nuevo constructor cada vez, entonces estoy adivinando Android tiene que reconstruir la vista de nuevo haciendo que desaparezca brevemente.

Un ejemplo de un buen código:

 class NotificationExample extends Activity { private NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this); private mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); //Different Id's will show up as different notifications private int mNotificationId = 1; //Some things we only have to set the first time. private boolean firstTime = true; private updateNotification(String message, int progress) { if (firstTime) { mBuilder.setSmallIcon(R.drawable.icon) .setContentTitle("My Notification") .setOnlyAlertOnce(true); firstTime = false; } mBuilder.setContentText(message) .setProgress(100, progress, true); mNotificationManager.notify(mNotificationId, mBuilder.build()); } } 

Con el código anterior, puede llamar a updateNotification (String, int) con un mensaje y progreso (0-100) y actualizará la notificación sin molestar al usuario.

Esto funcionó para mí, por lo que una notificación de actividad en curso (no de SERVICIO) se actualiza "silenciosamente".

 NotificationManager notifManager; // notifManager IS GLOBAL note = new NotificationCompat.Builder(this) .setContentTitle(YOUR_TITLE) .setSmallIcon(R.drawable.yourImageHere); note.setOnlyAlertOnce(true); note.setOngoing(true); note.setWhen( System.currentTimeMillis() ); note.setContentText(YOUR_MESSAGE); Notification notification = note.build(); notifManager.notify(THE_ID_TO_UPDATE, notification ); 

Prueba esto

  int id = (int) Calendar.getInstance().getTimeInMillis(); 

Utilice este identificador en el método notify (). El tiempo de su sistema Android crea un ID único

  • Registro de identificación del dispositivo directamente con Amazon SNS
  • Cómo quitar la notificación de la barra de notificación mediante programación en android?
  • Cómo crear una notificación personalizada en android
  • ¿Cómo las notificaciones necesitan WAKE_LOCK en android?
  • Determinar si la Actividad es llamada por una Notificación
  • Colapso de notificaciones nuevas de Jelly Bean por defecto
  • Actualizar la notificación ampliable, volver a expandirla, incluso después de que el usuario se derrumbó
  • Cómo crear ListView con la ayuda de remoteview?
  • Notificación setLights () Valor predeterminado?
  • ¿Cómo crear una Notificación Push automática para mi propia aplicación?
  • ¿Cómo obtener el color de fondo de notificación predeterminado para la notificación personalizada en Lollipop?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.