Android / Чтение со всеми активными уведомлениями в строке состояния

В классе NotificationListenerService, конечно же, есть функции onNotificationPosted(StatusBarNotification sbn) и onNotificationRemoved(StatusBarNotification sbn).

С помощью функции onNotificationPosted(StatusBarNotification sbn) я могу читать любые новые уведомления по мере их поступления. Есть ли способ навсегда прочитать ранее опубликованные уведомления на мобильном устройстве, которые еще не были отклонены? Это должно быть сделано с помощью моего собственного приложения для Android программно.


comment
Класс AccessibilityService и класс NotificationListenerService могут читать любые новые уведомления только по мере их поступления. Есть ли способ навсегда прочитать ранее опубликованные уведомления на мобильном устройстве, которые еще не были отклонены? Это должно быть сделано с помощью моего собственного приложения для Android программно.   -  person V. Raman    schedule 07.12.2018
comment
Проверьте мой ответ.   -  person Gergely Kőrössy    schedule 07.12.2018
comment
Во что бы то ни стало.   -  person V. Raman    schedule 07.12.2018


Ответы (1)


Вы можете использовать getActiveNotifications(), чтобы получить все активные уведомления, которые являются частью класса NotificationListenerService. Документация очень четко описывает этот метод:

Запросите список ожидающих уведомлений (то есть тех, которые видны текущему пользователю). Полезно, когда вы не знаете, что уже было опубликовано.

person Gergely Kőrössy    schedule 07.12.2018
comment
Благодарю за ваш ответ. Итак, пожалуйста, дайте мне знать, нужно ли переопределить эту функцию getActiveNotifications() в классе NotificationListenerService или ее нужно назначить в массиве StatusBarNotification[] внутри какого-либо типа вещей, таких как переопределенная функция onCreate() в классе NotificationListenerService. - person V. Raman; 07.12.2018
comment
Также рассмотрите возможность ответа на мой второй вопрос, который доступен здесь: stackoverflow.com/questions/53669827/. - person V. Raman; 07.12.2018
comment
В соответствии с рекомендациями Stack Overflow, сам новый вопрос не может быть опубликован как комментарий или как ответ на ответ, а только как сам новый вопрос, и, кстати, это также верно, что я чувствую, публикуя его, но только как сам новый вопрос, кроме того, акцент может быть сделан, конечно, на том, что нужно выделить достаточно тип части этого вопроса, что это навсегда. - person V. Raman; 07.12.2018
comment
Я очень ценю вашу оперативность в ответе. Сделано достаточно. - person V. Raman; 07.12.2018
comment
@V.Raman V.Raman Вам не нужно его переопределять, он реализован классом обслуживания. Вам просто нужно вызвать его, как только служба будет подключена (т.е. onListenerConnected() была вызвана). - person Gergely Kőrössy; 07.12.2018
comment
Я хотел бы знать, следует ли вызывать функцию getActiveNotifications() как обычную функцию без какого-либо объекта, связанного с ней, и без каких-либо аргументов из класса NotificationListenerService, который унаследован от базового класса от того, на котором он используется, и если внутри какой переопределенной функции он должен использоваться: функция onCreate() или функция onNotificationPosted(StatusBarNotification sbn) или функция onNotificationRemoved(StatusBarNotification sbn). - person V. Raman; 08.12.2018
comment
Или следует ли его вызывать для какого-либо объекта, связанного с ним, с некоторыми переданными ему аргументами, и если да, то какой это будет объект? Или следует ли его вызывать без какого-либо объекта, связанного с ним, с переданными ему некоторыми аргументами? - person V. Raman; 08.12.2018
comment
Кстати, почему класс NotificationListenerService не имеет какой-либо функции onResume(), которая может быть переопределена из базового класса из того, в котором она используется, которая может быть вызвана всякий раз, когда действие возобновляется в течение нескольких последовательных раз, а не вместо создания активности в первый раз? Есть ли способ обойти это? Пожалуйста, дайте мне знать очень хорошо об этом, достаточно любезно. - person V. Raman; 08.12.2018
comment
Вам не хватает основ основных компонентов Android, таких как сервисы. Служба не имеет функции onResume(), поскольку она либо никогда не останавливается сама по себе (называется запущенной службой), либо останавливается, только если останавливается связанный с ней компонент (называется связанной службой). Нет состояния паузы, так как он либо работает, либо нет. Например, музыкальный проигрыватель обычно работает как служба переднего плана, потому что пользователь хочет, чтобы он продолжал работать, даже если само приложение (Activity) было закрыто. - person Gergely Kőrössy; 08.12.2018
comment
Вы можете опубликовать свой последний комментарий в качестве ответа на этот вопрос здесь: stackoverflow.com/questions/53669827/. Я засчитаю голос за него и приму ваш ответ как правильный ответ, который принесет вам 25 очков репутации. Я также получу 2 очка репутации, если приму ваш ответ за правильный. - person V. Raman; 10.12.2018
comment
Мне нужно как минимум 75 очков репутации (сейчас у меня уже есть 59 очков репутации), чтобы назначить награду за столь необходимый мне вопрос, на который нужно ответить: stackoverflow.com/questions/49776167/. Вопросы без подсчета голосов и без ответов будут автоматически удалены в конце 1 года (в то время как вопросы с отрицательным количеством голосов и без ответов будут автоматически удалены в конце 1 месяца). Уже 8 месяцев с этим вопросом на данный момент, без каких-либо ответов, прямо сейчас. - person V. Raman; 10.12.2018