2012-01-14 10 views
5

Creé satisfactoriamente una notificación enriquecida personalizada para Android> = 3.0 que muestra texto y un botón adicional. Si hace clic en la notificación en cualquier lugar que no sea el botón en el menú desplegable de notificaciones, se descarta la notificación, se cierra el menú desplegable y se inicia el Intento especificado como se esperaba. Si se hace clic en el botón dedicado en la notificación, se inicia con éxito un Intento diferente, pero el menú desplegable permanece abierto (y la notificación sigue allí, pero la cancelo más tarde, ese no es el problema). Intent lanza una actividad que aparece detrás del menú desplegable de notificaciones.¿Cómo cerrar el menú desplegable de notificaciones en Android> = 3.0 desde notificaciones enriquecidas personalizadas con un botón adicional?

Lo que me gusta lograr es mantener todo el comportamiento actual tal como se describe, pero también cerrar el menú desplegable de notificaciones desde el botón Intento que se inicia, ¿es esto posible? Alternativamente, sería suficiente si la Actividad del botón Intención gana el foco de la ventana.

Aquí el código de la notificación personalizada, si eso ayuda:

  Notification.Builder builder = new Notification.Builder(main) 
       .setSmallIcon(R.drawable.notification) 
       .setAutoCancel(true) 
       .setTicker(text) 
       .setContentIntent(...); 

      RemoteViews layout = new RemoteViews(
        main.getPackageName(), R.layout.notification); 
      layout.setTextViewText(R.id.title, title); 
      layout.setTextViewText(R.id.text, text); 
      Intent i = new Intent(
        "snooze", null, main, Snooze.class 
      ); 
      i.putExtra(KEY_WIDGET_ID, widgetId); 
      layout.setOnClickPendingIntent(R.id.notification_zzz, PendingIntent.getActivity(main, 0, i, PendingIntent.FLAG_UPDATE_CURRENT)); 
      builder.setContent(layout); 

      ... 
      NotificationManager nm = 
       (NotificationManager)main.getSystemService(Context.NOTIFICATION_SERVICE); 
      nm.notify(0, builder.getNotification()); 

Respuesta

2

hizo la pregunta en las horas de oficina Android Desarrollador: http://www.youtube.com/watch?v=XvLBvdml_Fs (pregunta a partir 49:10)

La respuesta fue: que no es posible y ni siquiera debería hacer esto, lo cual cuestiono. Es por eso que he creado una solicitud de función: http://code.google.com/p/android/issues/detail?id=24762

EDITAR 10/08/12: Comenzando con Android 4.1 esto es posible ya que las notificaciones pueden ahora incluir acciones adicionales. Consulte la siguiente página para obtener más información: https://developer.android.com/about/versions/android-4.1.html#UI

+0

¿Ha resuelto este problema o ha cambiado el diseño de su aplicación? – Hunt

+1

Para Android 3.0 a 4.0 no encontré una solución. Pero como se mencionó anteriormente para Android 4.1 y superior, hay un mecanismo incorporado para acciones adicionales que también cerraría el menú desplegable y esto es lo que estoy usando. Puede encontrar más detalles aquí: http://developer.android.com/guide/topics/ui/notifiers/notifications.html#Actions – mdiener

Cuestiones relacionadas