I hope this doesn't violate any rule as I've tried following the How-to-ask guide.
I'm trying to read incoming notifications using NotificationListenerService and it works for me but only partially.
The first notification of it's type, lets say - whatsapp I can get the ticker, text and title but then if the notifications stack up I no longer can read the text of the messages.
How do I get the text of stacked up notifications?
Here is the code I currently implement:
public class NotificationService extends NotificationListenerService {
    private Context context;
    @Override
    public void onCreate() {
        super.onCreate();
        context = getApplicationContext();
    }
    @Override
    public void onNotificationPosted(StatusBarNotification sbn) {
        String pack = sbn.getPackageName();
        String ticker = sbn.getNotification().tickerText.toString();
        Bundle extras = sbn.getNotification().extras;
        String title = "";
        String text = "";
        if (extras.containsKey("android.title")) {
            title = extras.getString("android.title");
        }
        if (extras.containsKey("android.text")) {
            if (extras.getCharSequence("android.text") != null) {
                text = extras.getCharSequence("android.text").toString();
            }
        }
        if (pack != null) {
            Log.i("Package", pack);
        }
        if (ticker != null) {
            Log.i("ticker", ticker);
        }
        if (title != null) {
            Log.i("Title", title);
        }
        if (text != null) {
            Log.i("Text", text);
        }
    }
    @Override
    public void onNotificationRemoved(StatusBarNotification sbn) {
    }
}
If you're working with Android 7.0+, WhatsApp uses MessageStyle Expanded Notifications. Here - https://developer.android.com/training/notify-user/expanded.html#message-style
To retrieve all 5 messages from a notification like
MyFriend (5 messages)
testt
Do this:
Bundle extras = mysbn.getNotification().extras;
if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)){
        Parcelable b[] = (Parcelable[]) extras.get(Notification.EXTRA_MESSAGES);
        if(b != null){
            content = "";
            for (Parcelable tmp : b){
                Bundle msgBundle = (Bundle) tmp;
                content = content + msgBundle.getString("text") + "\n";
                /*Set<String> io = msgBundle.keySet(); // To get the keys available for this bundle*/
            }
        }
    }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With