Когда Android спрашивает «Разрешить доступ к уведомлениям», формулировка звучит почти безобидно. На практике я отношу такой доступ к чувствительным разрешениям. Приложение может получать уведомления других программ вместе с названием источника, заголовком, текстом, данными переписки и доступными действиями. До Android 15 сюда могли без особых препятствий попадать и одноразовые банковские коды.
Короткий ответ такой. Доступ к уведомлениям не даёт приложению полный доступ к телефону, переписке или банковской программе. Но всё, что другие приложения отправляют в системные уведомления, потенциально становится доступно слушателю. Android 15 и Android 16 значительно усложнили кражу одноразовых кодов, однако сообщения, суммы операций, названия магазинов, имена отправителей и другие данные по-прежнему могут читаться.
Доступ к уведомлениям стоит выдавать только приложениям, которым такая функция действительно нужна. Особенно осторожно я отношусь к APK из неизвестных источников, приложениям удалённой поддержки, автоматизаторам и программам, которые просят сразу несколько специальных разрешений.
Что именно получает приложение
Android использует для такой работы NotificationListenerService. После разрешения система сообщает службе о появлении и исчезновении уведомлений. Приложение получает не фотографию панели уведомлений, а структурированный объект Notification.
Внутри могут находиться EXTRA_TITLE, EXTRA_TEXT, дополнительные строки, сведения о собеседниках и массив сообщений из MessagingStyle. Поэтому уведомление «Анна: пароль от Wi-Fi 12345678» может передаться слушателю именно как текст с именем отправителя и содержимым сообщения.
Простейший слушатель выглядит примерно так.
override fun onNotificationPosted(sbn: StatusBarNotification) {
val notification = sbn.notification
val app = sbn.packageName
val title = notification.extras
.getCharSequence(Notification.EXTRA_TITLE)
val text = notification.extras
.getCharSequence(Notification.EXTRA_TEXT)
}
Система также позволяет запросить список уже активных уведомлений, то есть тех, которые всё ещё находятся в панели. Полный архив старых уведомлений разрешение само по себе не открывает. Если уведомление уже исчезло, приложение не получает автоматически многомесячную историю.
У NotificationListenerService есть и управляющие функции. Слушатель может удалять уведомления, а приложения часов, автомобильных систем и помощников могут работать с действиями, которые исходная программа встроила в уведомление. Речь не идёт о полном управлении банковским приложением, но разрешение явно шире обычного «показывать уведомления».
| Данные | Доступны слушателю уведомлений |
|---|---|
| Название приложения | Да |
| Заголовок уведомления | Обычно да |
| Текст уведомления | Обычно да |
| Имя отправителя в мессенджере | Часто да |
| Сумма покупки или перевода | Да, если банк показывает её в уведомлении |
| Полная история Telegram или WhatsApp | Нет |
| Содержимое банковского приложения | Нет |
| Активные уведомления в панели | Да |
| Одноразовый код | Зависит от версии Android и распознавания кода системой |
А что с банковскими кодами
На Android 14 и более старых версиях ситуация была неприятной. Если SMS-приложение показывало код подтверждения прямо в уведомлении, программа с доступом к уведомлениям могла получить такой же текст без разрешения на чтение SMS. Поэтому вредоносной программе необязательно было просить подозрительный доступ к сообщениям.
Android 15 изменил модель. Система пытается распознавать уведомления с OTP, одноразовыми паролями и кодами подтверждения, после чего передаёт большинству сторонних слушателей отредактированную версию без самого кода. Исключения предусмотрены для доверенных системных компонентов и некоторых приложений-компаньонов.
В Android 16 защита стала обязательной частью требований совместимости Android. Производители должны скрывать одноразовые пароли, коды подтверждения и похожие данные перед передачей обычным сторонним слушателям уведомлений.
Но я бы не превращал такое изменение в лозунг «коды теперь украсть невозможно». Защита зависит от того, распознала ли система уведомление как чувствительное. Кроме того, банковский код представляет лишь один фрагмент данных. Уведомление может раскрыть банк, последние цифры карты, сумму покупки, имя получателя, остаток, факт входа в аккаунт или сообщение о подтверждении операции.
Есть ещё одна ловушка. Настройка «Скрывать конфиденциальные уведомления на заблокированном экране» защищает прежде всего от человека, который смотрит на экран телефона. Настройка не равна отзыву специального доступа у NotificationListenerService. Для защиты от приложений нужно проверять именно список программ с доступом к уведомлениям.
Как проверить свой телефон
Я бы начал с поиска в настройках по словам «Доступ к уведомлениям». На современных версиях Android нужный пункт обычно находится примерно по пути Настройки → Приложения → Специальный доступ → Доступ к уведомлениям. На разных оболочках название может выглядеть как «Чтение, ответы и управление уведомлениями». Google использует такой раздел и для сервисов, которым разрешено читать и обрабатывать чужие уведомления.
В списке я оставляю только программы, для которых могу закончить предложение «этому приложению необходимо видеть мои чужие уведомления, потому что...». Для часов, автомобильной системы или синхронизации телефона с компьютером причина понятна. Для фонарика, файлового менеджера, игры или очередного «ускорителя Android» нормального объяснения обычно нет.
Тем, кто пользуется ADB, проще получить список напрямую.
adb shell settings get secure enabled_notification_listeners
Команда показывает компоненты, которым Android разрешил работать как слушателям уведомлений. После удаления подозрительного разрешения стоит повторить команду и убедиться, что компонент исчез из списка.
Чего доступ к уведомлениям не делает
У разрешения есть чёткие границы. Сам по себе NotificationListenerService не читает базу SMS, не получает файлы WhatsApp, не открывает историю Telegram и не видит произвольные экраны банковского приложения. Если приложение никогда не отправило конкретные данные в уведомление, слушатель не получает их магическим способом.
По той же причине сквозное шифрование мессенджера не спасает текст, который телефон уже расшифровал и показал в уведомлении. Шифрование защищает сообщение при передаче и хранении в определённых сценариях, а слушатель работает уже на конечном устройстве после доставки.
Ещё часто путают два разрешения. Обычное разрешение на уведомления позволяет программе показывать собственные уведомления. Специальный «доступ к уведомлениям» позволяет читать и обрабатывать чужие. Разница примерно как между правом положить письмо в почтовый ящик и правом заглядывать в чужую корреспонденцию.
Мой практический вывод простой. На Android 15 и Android 16 банковские одноразовые коды защищены заметно лучше, чем раньше, но доступ к уведомлениям всё равно остаётся очень чувствительным разрешением. Я бы не оценивал программу только по вопросу «увидит ли она код из банка». Куда полезнее спросить, готов ли я передать разработчику текст входящих сообщений, письма, суммы операций и список сервисов, которыми пользуюсь. Если ответ отрицательный, разрешение лучше не выдавать.
Может ли приложение с доступом к уведомлениям читать Telegram?
Приложение может получить текст и имя отправителя, если Telegram поместил такие данные в системное уведомление. Полный архив переписки такое разрешение не открывает.
Нужно ли разрешение на SMS, чтобы увидеть код из SMS?
Не обязательно. На старых версиях Android слушателю хватало текста уведомления от SMS-приложения. Android 15 и новее скрывают распознанные одноразовые коды от большинства сторонних слушателей.
Может ли приложение видеть старые уведомления?
Приложение может запросить текущие активные уведомления. Полную историю ранее удалённых уведомлений один NotificationListenerService не предоставляет.
Защищает ли скрытие уведомлений на экране блокировки?
Настройка хорошо защищает от постороннего взгляда, но не заменяет отзыв специального доступа к уведомлениям у приложения.
Может ли слушатель удалять уведомления?
Да. Android API позволяет авторизованному NotificationListenerService удалять отдельные уведомления или очищать несколько уведомлений.
Кому вообще нужен доступ к чужим уведомлениям?
Типичные законные примеры включают умные часы, автомобильные системы, синхронизацию телефона с компьютером, голосовых помощников и программы для управления уведомлениями.