2011-07-28 9 views
5

Estoy desarrollando una aplicación de Android y quiero una notificación de barra de estado que el usuario no pueda borrar. ¿Alguien sabe cómo hacer eso? Los he visto con aplicaciones como Skimble, donde aparece una notificación no eliminable durante el uso de la aplicación.Notificación de la barra de estado de Android: haz que no sea eliminable y devuelve la aplicación (no se inicia una nueva instancia)

Además, cuando el usuario hace clic/presiona la notificación, quiero que regrese a la instancia de la aplicación que ya se está ejecutando. Ahora mismo comienza una nueva instancia. De nuevo, como la aplicación Skimble, solo quiero volver a la instancia de la aplicación que ya se está ejecutando.

Gracias.

Respuesta

4

Encontré una solución a este problema. Usé FLAG_ONGOING_EVENT para que la notificación persistiera. Aquí está el código:

String ns = Context.NOTIFICATION_SERVICE; 
    NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns); 

    int icon = R.drawable.mypic; 
    long when = System.currentTimeMillis(); 
    Notification notification = new Notification(icon, tickerText, when); 
    notification.flags = Notification.FLAG_ONGOING_EVENT; 

    Context context = getApplicationContext(); 
    CharSequence contentTitle = "Title Text"; 
    CharSequence contentText = "Content text."; 

    Intent intent = new Intent(this, MyClass.class); 
    intent.setAction("android.intent.action.MAIN"); 
    intent.addCategory("android.intent.category.LAUNCHER"); 
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0); 

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

    final int HELLO_ID = 1; 
    mNotificationManager.notify(HELLO_ID, notification); 
+0

En lugar de utilizar el 'FLAG_ONGOING_EVENT' también puede usar' FLAG_NO_CLEAR', dependiendo de dónde desee que aparezca la notificación (más información [aquí] (http://developer.android.com/reference/android/app /Notification.html#FLAG_NO_CLEAR)) – THelper

0

notification.setLatestEventInfo está en desuso por lo que tiene que utilizar el Notification.builder y si el uso de la API 2.X y más baja que tienen que utilizar NotificationComacpt.Builder y esto no es aplicable y no pude No hago que mi notificación se quede. así que usé setDeleteIntent y apunté a la misma actividad y en el método de reanudar simplemente llame al bloque de código que muestra su notificación. Entonces es un poco de trabajo alrededor.

3

Aquí está la solución para el NotificationCompat.Builder

NotificationCompat.Builder builder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.ic_launcher) .setContentTitle("MyApp") .setContentText("MyMsg") .setOngoing(true);

Más en el Google docs.

Cuestiones relacionadas