From 336ffd5bf72c599b5ff4365d5639465d785dc0bc Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Tue, 18 Oct 2016 23:44:00 +0200 Subject: [PATCH] Extract EXTRA_BIG_TEXT instead of EXTRA_TEXT if available. This makes K9 Mail usable with only using generic notifcations on Android >=5 (It shows the message preview now) --- .../externalevents/NotificationListener.java | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/NotificationListener.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/NotificationListener.java index 4c986758..ddc2449b 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/NotificationListener.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/NotificationListener.java @@ -313,16 +313,24 @@ public class NotificationListener extends NotificationListenerService { private void dissectNotificationTo(Notification notification, NotificationSpec notificationSpec) { Bundle extras = notification.extras; + + //dumpExtras(extras); + CharSequence title = extras.getCharSequence(Notification.EXTRA_TITLE); if (title != null) { notificationSpec.title = title.toString(); } - if (extras.containsKey(Notification.EXTRA_TEXT)) { - CharSequence contentCS = extras.getCharSequence(Notification.EXTRA_TEXT); - if (contentCS != null) { - notificationSpec.body = contentCS.toString(); - } + + CharSequence contentCS = null; + if (extras.containsKey(Notification.EXTRA_BIG_TEXT)) { + contentCS = extras.getCharSequence(Notification.EXTRA_BIG_TEXT); + } else if (extras.containsKey(Notification.EXTRA_TEXT)) { + contentCS = extras.getCharSequence(Notification.EXTRA_TEXT); } + if (contentCS != null) { + notificationSpec.body = contentCS.toString(); + } + } private boolean isServiceRunning() { @@ -412,4 +420,14 @@ public class NotificationListener extends NotificationListenerService { public void onNotificationRemoved(StatusBarNotification sbn) { } + + private void dumpExtras(Bundle bundle) { + for (String key : bundle.keySet()) { + Object value = bundle.get(key); + if (value == null) { + continue; + } + LOG.debug(String.format("Notification extra: %s %s (%s)", key, value.toString(), value.getClass().getName())); + } + } }