2011-03-17 45 views
10

He escrito la función de notificar y exhibición en barra de notificaciones:Android - Mantener la notificación estable en la barra de notificación

private void showNotification() 
    { 
      CharSequence title = "Hello"; 
      CharSequence message = "Notification Demo"; 

      NotificationManager notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); 
      Notification notification = new Notification(R.drawable.icon, "A Notification", System.currentTimeMillis()); 
      Intent notificationIntent = new Intent(this, Main_Activity.class); 
      PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); 

      notification.setLatestEventInfo(Main_Activity.this, title, message, pendingIntent); 
      notificationManager.notify(NOTIFICATION_ID, notification); 
    } 

Su trabajo bien, pero what way we can keep the notification steady at Notification bar incluso cuando el usuario pulsa el "claro" botón notificatios de la barra de notificaciones?

Eche un vistazo a la barra de notificaciones de la aplicación "Yahoo".

enter image description here

que han pasado por este artículo SDK: http://developer.android.com/guide/topics/ui/notifiers/notifications.html#Updating, pero no pudo averiguar.

+1

¿Estás seguro de que mantener esta notificación estable es una buena idea? –

+0

@Heiko Rupp siento decir que sí, pero es el requisito real que tengo que implementar. –

+1

Los lectores deben ser claros en esto: usar esto para publicitar su aplicación molestará a sus usuarios intensamente y solo se debe utilizar para que necesite proporcionar un acceso rápido constante para controlar un servicio en funcionamiento. Por ejemplo: una aplicación de música (solo mientras se está reproduciendo algo), navegación (solo mientras navega por una ruta) o registrador de GPS (mientras se está registrando). –

Respuesta

25

Uso FLAG_NO_CLEAR

Sólo hay que establecer en su Notification instancia antes de suministrarla al NotificationManager:

notificaton.flags |= Notification.FLAG_NO_CLEAR; 

edición: acabo de notar sin embargo que si usted está usando Notification.Builder (ya que Honeycomb) y hacer la notificación "en curso", también se volverá inmune a "borrar todo". Ver here.

Al parecer, esto se supone que desalienta a los desarrolladores a utilizar el FLAG_NO_CLEAR en una notificación no continua, ya que esto podría confundir al usuario.

+0

@ user634618 +1, exactamente lo que estaba buscando, he implementado la bandera y está funcionando bien. Gracias por el apoyo. –

12

Probar setOngoing (true).

notification = new Notification.Builder(getApplicationContext()) 
      .setLargeIcon(
        BitmapFactory.decodeResource(getResources(),  R.drawable.ic_launcher)) 
      .setSmallIcon(R.drawable.ic_launcher).setTicker(tickerText) 
      .setWhen(System.currentTimeMillis()).setContentTitle(contentTitle) 
      .setOngoing(true) 
      .setContentText(contentText) 
      .setContentIntent(contentIntent) 
Cuestiones relacionadas