Скрыть уведомление VPN в Android, не останавливая туннель
Android может показывать три разных уведомления VPN. Узнайте, какому приложению принадлежит видимое уведомление, что на самом деле меняет каждый переключатель и что продолжает работать.
Можно скрыть уведомление о том, что ваш VPN работает, и туннель продолжит работать без него. Это удивляет людей, потому что сообщение и соединение ощущаются одним объектом. Но это не так. На большинстве телефонов Android запись в шторке, ключ в строке состояния и уведомление работающей службы могут приходить от трёх разных владельцев, и только один из них подчиняется разрешению приложения на уведомления. Понять, что вам разрешено убрать, можно, только выяснив, кто опубликовал строку, на которую вы смотрите.
Три уведомления, три владельца
Первый владелец — само приложение VPN, которое обычно публикует постоянное уведомление с действием подключения или отключения и таймером сеанса. Второй — собственный индикатор VPN в Android: SystemUI рисует значок ключа и, в зависимости от версии и производителя, строку системного уровня, сообщающую об активной сети VPN. Третий — уведомление о политике устройства, которым управляет рабочий профиль или приложение администратора. Ни одно из них не является одним и тем же объектом, даже если они стоят рядом в шторке.
Разберите сообщение, прежде чем трогать переключатель:
| Notice | Who controls it |
|---|---|
| App-owned ongoing notice | The app's notification channel; a long-press shows the channel name and the owning package |
| Foreground-service notice | The service visibility Android requires while the tunnel runs; the app cannot simply drop it |
| System VPN indicator | SystemUI or the manufacturer, driven by the VPN network state rather than by the app's channel |
| Work-policy notice | The administrator or work-profile policy; the phone user may not have the switch at all |
Какие элементы управления вы видите, зависит от версии Android, сборки производителя и канала, созданного приложением. Серый переключатель — это утверждение о политике, а не приглашение её обойти. Если переключателя в вашей сборке нет, честный ответ таков: именно это уведомление не вам убирать.
Найдите пакет за строкой
Нажмите на уведомление и удерживайте, а затем откройте его настройки, прежде чем читать что-либо ещё. Экран, на который вы попадёте, называет канал, и начиная с Android 8 этот канал принадлежит ровно одному пакету. Если канал называется как-то вроде состояния VPN, а приложение — ваш клиент, уведомление принадлежит приложению, и смотреть нужно на странице настроек приложения. Если вы попали на системную страницу без канала вообще, вы смотрите на индикатор платформы, и приложение ничем не поможет.
Когда долгое нажатие говорит недостаточно, один вызов adb перечисляет, что и кем на самом деле опубликовано: adb shell dumpsys notification --noredact, затем поищите в выводе подозрительный пакет. Вам нужен опубликовавший пакет и идентификатор канала, а не то, что можно оттуда отредактировать. Относитесь к выводу как к диагностике: ничто в этом списке уведомление не меняет.
На управляемом телефоне ответ иногда скучен: уведомление приходит от приложения политики устройства, а человек, держащий телефон, не тот, кто может его отключить. В этом случае консоль администратора — единственный поддерживаемый элемент управления, а собственные настройки телефона остаются серыми, какое бы меню вы ни нашли.
Что на самом деле меняет разрешение Android 13
Android 13 сделал уведомления разрешением времени выполнения, поэтому приложение с целевым API 33 должно спросить, прежде чем что-то публиковать. Откажите в этом запросе, и уведомления приложения перестанут появляться в шторке, что кажется искомым решением. Но служба переднего плана за VPN продолжает работать, и система по-прежнему показывает её в Диспетчере задач, даже когда её уведомление исчезло из шторки. Сама авторизация VPN остаётся нетронутой: туннель держится, пока вы его не отключите или не отзовёте согласие приложения на VPN.
Этот обмен хуже, чем кажется, потому что уведомление — ещё и самый быстрый способ увидеть сеанс и завершить его. Уберите его, и вы сделали телефон труднее для понимания, ничего не изменив в маршрутизации. Документация о разрешении на уведомления описывает поведение шторки; она не описывает поддерживаемого способа заглушить работающий туннель.
Есть ещё одна особенность версии, которую стоит знать: уведомление службы переднего плана требуется моделью службы, и приложение не вправе прятать его только потому, что вы отказали в разрешении. Некоторые сборки оставляют компактную версию видимой, другие переносят доказательство в Диспетчер задач, и это различие — выбор производителя, а не настройка, которую вы упустили.
Деморежим и трюки со значками — не решение
Вы найдёте советы про деморежим, про скрытие значков недокументированными командами adb и про ошибку интерфейса, из-за которой ключ исчезает. Всё это меняет представление. Ничто из этого не меняет маршрутизацию, политику или авторизацию VPN, за которой следит система, и телефон, состояние сети которого невидимо, труднее диагностировать, чем тот, у которого в шторке есть лишняя строка.
Значок подключения приложения тоже не проверка состояния. Туннель может быть опущен, пока старый интерфейс или устаревшее уведомление остаются, а локальная служба фильтрации может поднять ключ VPN, не отправив ни одного байта на удалённый выход. Проверяйте фактическое состояние в системных настройках VPN, а не в шторке.
Что бы я изменил, по порядку
Начните с определения владельца, затем используйте только тот элемент управления, который предлагает этот владелец. Если уведомление принадлежит приложению и необязательно, отключите этот канал и оставьте канал службы в покое. Если это системный индикатор, примите его: он сообщает факт об устройстве, а не рекламирует приложение. На управляемом устройстве остановитесь на политике администратора и не ищите обход.
Затем убедитесь, что у вас всё ещё есть поддерживаемый способ проверить туннель и отключить его, будь то экран самого приложения или страница системных настроек VPN. Телефон с одним баннером меньше и понятным способом завершить сеанс — это тот результат, который вам нужен. Обратное, более тихая шторка и никакого представления о том, маршрутизируется ли трафик, улучшением не является.