Приложение для автоматического управления рабочим профилем Android при подключении VPN.
Приложение отслеживает VPN-подключения и автоматически отключает рабочий профиль когда VPN активен, и восстанавливает его состояние после отключения VPN. Удобно для случаев когда рабочий профиль содержит приложения которые не должны работать через VPN-туннель, или наоборот — когда нужно изолировать рабочие приложения от VPN-трафика.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
- Автоматическое отключение рабочего профиля при подключении VPN
- Восстановление состояния профиля после отключения VPN (опционально)
- Обратная логика — отключать профиль если он был включён вручную при активном VPN (опционально)
- Режим allowlist — мониторить только выбранные VPN-приложения
- Режим denylist — мониторить все VPN, кроме исключённых (в первую очередь для корректной работы совместно с AdGuard)
- Фоновый опрос — резервный механизм для устройств, где события сети подавляются ОС
- Мультиязычность — русский и английский интерфейс
- Android 11 (API 30) и выше
- Настроенный рабочий профиль (через Shelter или другое приложение)
- Разрешение
MODIFY_QUIET_MODE— выдаётся вручную через ADB (см. ниже)
- Скачать APK из Releases
- Установить на устройство
- Выдать разрешение через ADB:
adb shell pm grant io.github.snood21.workprofilevpnswitcher android.permission.MODIFY_QUIET_MODEПримечание: разрешение нужно выдавать заново после переустановки приложения. При обычном обновлении сохраняется.
- Открыть приложение
- В разделе VPN-приложения добавить нужные VPN-приложения
- Выбрать Режим мониторинга:
- Все VPN, кроме исключений (по умолчанию) — срабатывает на любой VPN кроме добавленных в список (подходит для исключения AdGuard)
- Только выбранные приложения — срабатывает только на VPN-приложения из списка
- Включить Мониторинг
Некоторые прошивки (в том числе MIUI/HyperOS) подавляют события смены сети для фоновых приложений. В этом случае включите Фоновый опрос в разделе Расширенные настройки.
Также необходимо:
- Разрешить автозапуск приложения в настройках телефона
- Установить режим батареи для приложения: Без ограничений
| Разрешение | Для чего |
|---|---|
ACCESS_NETWORK_STATE |
Отслеживание VPN-подключений |
FOREGROUND_SERVICE |
Фоновый мониторинг |
RECEIVE_BOOT_COMPLETED |
Автозапуск после перезагрузки |
POST_NOTIFICATIONS |
Уведомления о блокировке профиля |
VIBRATE |
Тактильная обратная связь |
MODIFY_QUIET_MODE |
Управление рабочим профилем (выдаётся через ADB) |
Определение рабочего профиля. Приложение определяет рабочий профиль как первый пользовательский профиль на устройстве, отличный от основного (личного). На большинстве устройств с одним настроенным рабочим профилем это работает корректно. Однако если на устройстве присутствует более одного дополнительного профиля — например, второй пользователь, гостевой профиль, приватное пространство (Android 15+) или clone-профиль некоторых производителей — приложение может ошибочно выбрать не тот профиль.
Публичный Android API не предоставляет стороннему приложению надёжного способа однозначно определить, какой именно из нескольких дополнительных профилей является управляемым (рабочим) — точная проверка (UserManager.isManagedProfile) либо требует специальных разрешений, недоступных обычным приложениям, либо ограничена контекстом текущего пользователя.
Рекомендация: если на вашем устройстве настроен только один дополнительный (рабочий) профиль, ограничение не проявляется. Если профилей несколько — поведение приложения не гарантировано; проверьте результат вручную после настройки.
git clone https://github.com/snood21/workprofile-vpn-switcher.git
cd workprofile-vpn-switcher
./gradlew assembleDebugПосле сборки выдать разрешение:
adb shell pm grant io.github.snood21.workprofilevpnswitcher.debug android.permission.MODIFY_QUIET_MODEDonatty (доступна оплата по СБП)
Copyright 2025 snood21
An Android application that automatically manages the work profile when a VPN connection is active. It disables the work profile when VPN connects and optionally restores its previous state when VPN disconnects.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
- Automatic disabling of the work profile when VPN connects
- State restoration after VPN disconnects (optional)
- Reverse logic — disable profile if manually enabled while VPN is active
- Allowlist mode — monitor only selected VPN apps
- Denylist mode — monitor all VPN connections except excluded apps (e.g. AdGuard)
- Background polling — fallback mechanism for devices where network events are suppressed by the OS
- Multilingual — Russian and English interface
- Android 11 (API 30) or higher
- A configured work profile (via Shelter or similar app)
MODIFY_QUIET_MODEpermission — granted manually via ADB (see below)
- Download the APK from Releases
- Install on device
- Grant the required permission via ADB:
adb shell pm grant io.github.snood21.workprofilevpnswitcher android.permission.MODIFY_QUIET_MODENote: the permission must be re-granted after a clean reinstall. It persists through regular updates.
- Open the app
- In the VPN Applications section, add your VPN apps
- Choose Monitoring mode:
- All VPN except exclusions — triggers for any VPN except apps in the list (suitable for excluding AdGuard)
- Only selected apps — triggers only for VPN apps in the list
- Enable Monitoring
Some firmware (including MIUI/HyperOS) suppresses network change events for background apps. In this case, enable Background polling in the Advanced settings section.
You may also need to:
- Allow autostart for the app in phone settings
- Set battery mode for the app to No restrictions
| Permission | Purpose |
|---|---|
ACCESS_NETWORK_STATE |
Monitor VPN connections |
FOREGROUND_SERVICE |
Background monitoring |
RECEIVE_BOOT_COMPLETED |
Autostart after reboot |
POST_NOTIFICATIONS |
Profile block notifications |
VIBRATE |
Haptic feedback |
MODIFY_QUIET_MODE |
Manage work profile (granted via ADB) |
Work profile detection. The app identifies the work profile as the first user profile on the device that differs from the primary (personal) one. On most devices with a single configured work profile this works correctly. However, if the device has more than one additional profile — for example, a second user, a guest profile, private space (Android 15+), or a vendor-specific clone profile — the app may pick the wrong profile.
The public Android API does not give a third-party app a reliable way to determine which of several additional profiles is specifically the managed (work) profile — the precise check (UserManager.isManagedProfile) either requires special permissions unavailable to regular apps, or is limited to the current user's own context.
Recommendation: if your device has only one additional (work) profile configured, this limitation does not apply. If there are multiple, the app's behavior is not guaranteed — verify the result manually after setup.
git clone https://github.com/snood21/workprofile-vpn-switcher.git
cd workprofile-vpn-switcher
./gradlew assembleDebugAfter building, grant the permission:
adb shell pm grant io.github.snood21.workprofilevpnswitcher.debug android.permission.MODIFY_QUIET_MODECopyright 2025 snood21











