Короткий ответ — не совсем. Обычная «песочница» Android (UID‑изоляция приложений) сама по себе не «скроет» VPN от приложения: стандартные API и системные сведения о сети остаются доступны (при наличии обычных разрешений), и приложение в том же профиле/пользователе сможет заметить, что трафик идёт через VPN. Но в корпоративных контейнерах/профилях (Work Profile, Samsung Knox, Device/Profile Owner политики) поведение может отличаться — администратор может настроить отдельную сетевую среду для контейнера, и тогда приложение внутри контейнера увидит только ту VPN‑информацию, которая относится к этому контейнеру.
Подробно по пунктам:
- Что даёт «песочница» (UID‑изоляция): приложения имеют отдельный UID, отдельную файловую область, ограничения на доступ к данным других приложений. Это не то же самое, что «сеть скрыта». Большинство сетевых API (ConnectivityManager, NetworkCapabilities и т. п.) по‑прежнему дают информацию о сетевом состоянии для текущего пользователя/профиля.
- Как приложения обычно обнаруживают VPN:
- Проверяют NetworkCapabilities/ ConnectivityManager (есть ли транспорт VPN у активной сети).
- Смарт‑эвристики: смотрят интерфейсы (tun0), /proc/net/*, таблицы маршрутизации, публичный IP (через внешний сервис) и сверяют с ожидаемым.
- Ищут установленные VPN‑приложения или привилегии Device/Carrier VPN.
Эти способы сработают, если VPN влияет на сетевой стек того же пользователя/профиля, в котором запущено приложение.
- Что делает контейнеризация (Work Profile, Knox и т. п.):
- В корпоративном профиле может быть собственный VPN (или вообще отсутствовать общий VPN). Приложение внутри контейнера будет видеть состояние сети, относящееся к этому профилю, а не к «основному» профилю пользователя.
- Некоторые решения могут использовать отдельные сетевые namespace/изоляцию, так что видимость интерфейсов и /proc‑вещей отличается для контейнера.
- MDM/Knox могут ограничить видимость информации об установленных пакетах других профилей и накладывать политики, которые мешают «наружному» обнаружению.
- Ограничения и нюансы:
- Если VPN настроен «для устройства» (device‑wide) или на уровне ядра/оператора, приложения почти всегда смогут определить, что трафик идёт через VPN (через стандартные API или по публичному IP).
- Если VPN настроен только для другого профиля/контейнера, приложение в своём профиле этого VPN не увидит.
- Доступ к некоторым /proc‑файлам и низкоуровневым сведениям с ростом версий Android сильно ограничен; это уменьшает количество побочных каналов для детекции, но не отменяет API‑возможности.
- Разные версии Android и разные реализации (AOSP vs Samsung Knox) дают разные детали реализации сети/изоляции.
Вывод: если вы запускаете приложение в обычном пользовательском профиле, «песочница» сама по себе не помешает обнаружению VPN. Если же приложение находится в отдельном контейнере/рабочем профиле, то этот контейнер может иметь собственную сетевую конфигурацию — и тогда приложение внутри не увидит VPN другого профиля. То есть многое зависит от того, где именно настроен VPN и какие политики/изоляция применяются (стандартный профиль vs Knox/Work Profile vs device owner).