Cómo obtener el texto de las notificaciones apiladas en Android

La pregunta es cómo obtener el campo TEXTO (no título) de todas las notificaciones entrantes cuando se apilan (como en WhatsApp).

Introduzca aquí la descripción de la imagen

public class NLService extends NotificationListenerService { public void onNotificationPosted(StatusBarNotification sbn) { Log.v(Constants.TAG_notifs, "------------------------- in onNotificationPosted(), Notification Text = " + sbn.getNotification().tickerText); Bundle extras = sbn.getNotification().extras; if (extras.containsKey("android.text")) { if (extras.getCharSequence("android.text") != null) { String text = extras.getCharSequence("android.text").toString(); Log.v(Constants.TAG_notifs, "------------------------- in onNotificationPosted(), Bundle.text != NULL, so here it is = " + text); } } if (extras.containsKey("android.title")) { Log.v(Constants.TAG_notifs, "------------------------- in onNotificationPosted(), Bundle android.title = " + extras.getString("android.title")); } } @Override public void onNotificationRemoved(StatusBarNotification sbn) { //super.onNotificationRemoved(sbn); } 

} La primera vez que una notificación Whatsapp llega de un solo usuario esta línea ( String text = extras.getCharSequence ("android.text"). ToString (); ) es capaz de leer el texto con éxito, pero después de eso cuando más mensajes entran Y las notificaciones se apilan (como en la imagen mostrada arriba), el texto de la variable es siempre NULL.

Esto debe ser posible porque esta aplicación lo está haciendo, probado. Está recibiendo el texto de cada aplicación.

Añadido incentivo : Si usted sabe la respuesta o cosas para probar, hay otra pregunta que parece similar pregunta aquí .

La aplicación de WhatsApp tiene estructura para enviar notificaciones como esta:

  Case Notification Message comes from A : Hi Title : A Text: Hi Message comes from A : How are you Title : A Text: How are you Title : A Text: 2 new messages Message comes from B : Hello Title : B Text: Hello Title : B Text: 1 new message Title : A Text: 2 new messages Title : WhatsApp Text: 3 new messages from 2 conversation ---- Here comes the stacking ---- Message comes from C : Good work Title : C Text: Good work Title : C Text: 1 new message Title : B Text: 1 new message Title : A Text: 2 new messages Title : WhatsApp Text: 4 new messages from 3 conversation ---- This way when new sender message comes, previoud notifications also comes and we get callback in NotificationListener ---- 

Última notificación viene con Título como Nombre del paquete: WhatsApp y Texto como: X mensajes de Y Conversación

Para obtener texto:

 sbn.getNotification().extras.getCharSequence(Notification.EXTRA_TEXT).toString(); 

Para obtener Título:

 sbn.getNotification().extras.getCharSequence(Notification.EXTRA_TITLE).toString(); 

Para trabajar con esta sturcture del apilamiento, necesitamos analizar esta pila de la notificación y exhibir solamente la información selectiva en nuestra aplicación

Espero que mi respuesta ayude y solucione su consulta

Creo que esto puede ayudarle:

 CharSequence[] lines = extras.getCharSequenceArray(Notification.EXTRA_TEXT_LINES); if(lines != null && lines.length > 0) { StringBuilder sb = new StringBuilder(); for (CharSequence msg : lines) if (!TextUtils.isEmpty(msg)) { sb.append(msg.toString()); sb.append('\n'); } return sb.toString().trim(); } CharSequence chars = extras.getCharSequence(Notification.EXTRA_BIG_TEXT); if(!TextUtils.isEmpty(chars)) return chars.toString(); 

Sólo investigado en WhatsApp con permiso de servicio de accesibilidad. Todas las notificaciones entrantes cuando se apilan (como en Whatsapp), puede utilizar AccessibilityEvent método getRecord () para extraer el contexto en la pila. El contenido contiene [remitente, hora, contexto, índice] probado en Android 5.1 en MOTO G

  • Notificación de Android: agregue la tipografía para el título y el contenido
  • Android GCM: no obtener el token de registro en el método onCreate ()
  • Notificación de Android - RemoteServiceException
  • ¿Cómo manejar idiomas mixtos RTL y LTR en las notificaciones?
  • Notificaciones en horario específico cada día android
  • Cómo detener el tono de llamada de notificación de Android después de 30 segundos?
  • ¿Es posible configurar la notificación ampliada como predeterminada en las notificaciones de texto grande?
  • Eliminación de elemento de lista similar a la notificación en diapositiva en Android
  • Android: ¿Notification.DEFAULT_VIBRATE requiere permiso de vibración?
  • NotificationCompat con API 26
  • ¿Puedo probar las notificaciones de la barra de estado utilizando el marco de pruebas de Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.