Intereting Posts
Как я могу связать предварительно созданную библиотеку с Android NDK? Ошибка Runtime.exec (): зависает без предоставления объекта Process Может ли Android Toast быть дольше, чем Toast.LENGTH_LONG? Как я могу управлять устройством Android с ПК? MvvmCross – попытка использования фрагментов И последняя поддержка lib приводит к связыванию проблем Как установить тему для DialogFragment Есть ли в любом случае приложение может использовать более 16 МБ в памяти? Планирование нескольких ожиданий в отношении активности с помощью AlarmManager Более элегантный способ декодирования \ u0000 Unicode во входном потоке Как получить программные данные System On Chip с устройства Ошибка сборки Gradle не может решить io.fabric Лучше раздувать или создавать элементы управления на Android? Можно ли использовать OpenMP-библиотеку с Android NDK? SQL-запрос с кодом в порядке по броскам "(1) 1-й срок ORDER BY не соответствует ни одному столбцу в результирующем наборе" Центр визирования большого пальца не в начальной точке

Android – получение списка старых уведомлений

Я знаю, что на Android вы можете получить список текущих активных уведомлений с NotificationListenerService . Однако можно получить список старых уведомлений (что больше неактивно).

Я знаю, что в ОС Android есть функция « Журнал уведомлений» . Можно ли получить один и тот же контент только для моего приложения? Или это нужно обрабатывать на уровне приложения, чтобы сохранить такую ​​историю?

К сожалению, в ACCESS_NOTIFICATIONS уведомлений используется метод getHistoricalNotifications of NotificationManagerService , для которого требуется разрешение ACCESS_NOTIFICATIONS . По этой причине он зарезервирован для системных приложений:

 /** * System-only API for getting a list of recent (cleared, no longer shown) notifications. * * Requires ACCESS_NOTIFICATIONS which is signature|system. */ @Override public StatusBarNotification[] getHistoricalNotifications(String callingPkg, int count) { // enforce() will ensure the calling uid has the correct permission getContext().enforceCallingOrSelfPermission( android.Manifest.permission.ACCESS_NOTIFICATIONS, "NotificationManagerService.getHistoricalNotifications"); StatusBarNotification[] tmp = null; int uid = Binder.getCallingUid(); // noteOp will check to make sure the callingPkg matches the uid if (mAppOps.noteOpNoThrow(AppOpsManager.OP_ACCESS_NOTIFICATIONS, uid, callingPkg) == AppOpsManager.MODE_ALLOWED) { synchronized (mArchive) { tmp = mArchive.getArray(count); } } return tmp; } 

Единственный жизнеспособный вариант – создать NotificationListenerService , реализовать метод onNotificationPosted и локально отслеживать новые уведомления, публикуемые приложениями.