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).
- Dimensiones grandes de la imagen de la notificación de Android
- Administrar los objetos View y Class <?> Actuales
- La notificación pasa Antiguo Intent Extras
- Iniciar una actividad de notificación destruye las actividades de los padres
- Cambiar dinámicamente el texto de notificación de Android
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í .
- Obtener el ancho del panel de notificaciones de Android
- todos Huawei, Honor, Xiaomi en Marshmallow: Notificación icono pequeño siempre establecido en el icono de la aplicación
- ¿Cómo comprobar si el usuario ha inhabilitado sonidos para las notificaciones?
- Método de llamada de Android en la notificación haga clic
- NotificationListenerService no leer texto de notificaciones apiladas
- ¿Hay alguna forma en la que una aplicación pueda comprobar si se le permite acceder a las notificaciones?
- Cambiar presentación de notificaciones
- La notificación android lanza la misma actividad dos veces
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
- Cómo purgar errores falsos en eclipse?
- Almacenamiento de datos en Android: almacenamiento de archivos vs base de datos SQLite vs preferencias compartidas