Как прочитать все приходящие уведомления в андроиде

Как прочитать все приходящие уведомления в андроиде. Можно ли использовать широковещательный приемник для прослушивания входящих уведомлений и возможность чтения информации об уведомлениях.


person Adham    schedule 26.05.2013    source источник
comment
Вы можете взглянуть на AccessibilityService, см. developer.android.com/training/ доступность/ или stackoverflow.com /вопросы/14540394/   -  person Robe Elckers    schedule 26.05.2013


Ответы (3)


Сначала вы должны заявить о своем намерении получать уведомления в своем манифесте, чтобы получить разрешение android.permission.BIND_NOTIFICATION_LISTENER_SERVICE.

AndroidManifest.xml:

<service android:name=".NotificationListener"
         android:label="@string/service_name"
         android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
    <intent-filter>
        <action android:name="android.service.notification.NotificationListenerService" />
    </intent-filter>
</service>

Затем создайте класс NotificationListenerService и переопределите функцию onNotificationPosted.

Дополнительные сведения см. в справочнике для разработчиков здесь: https://developer.android.com/reference/android/service/notification/NotificationListenerService.html

Также просмотрите этот простой пример приложения для руководства по реализации: https://github.com/kpbird/NotificationListenerService-Example/

person Monban    schedule 12.01.2014
comment
Примечание. Это работает, но не работает для текстового поля Stacked Notifications. - person user1406716; 31.03.2015
comment
Этот пример не работает для меня, у меня есть разрешение на уведомление, но он все равно не показывает никакого списка. - person Bhanu Sharma; 07.07.2016
comment
Скажите, а можно ли таким образом преобразовать все уведомления в уведомления без хедз-ап? - person android developer; 21.09.2016
comment
можно ли прочитать уже существующее уведомление или только новое, которое придет? - person Ewoks; 27.01.2017
comment
он работает в зефире, но ошибка в 8.0 с notificationChannel - person Sunil Chaudhary; 14.11.2018


Вам нужно сделать это в onNotificationPosted, чтобы получить все сообщения

if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)){
        Parcelable b[] = (Parcelable[]) extras.get(Notification.EXTRA_MESSAGES);

        if(b != null){

            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*/

            }
        }
    }
person Rohit269    schedule 26.07.2018