Как программно создать новый интерфейс VPN с Android 4.0? - PullRequest
28 голосов
/ 19 января 2012

Я хотел бы знать, возможно ли программно создать интерфейс VPN с новыми API VPN в Android 4.0.Я просмотрел http://developer.android.com/resources/samples/ToyVpn, но речь идет о создании полноценного VPN-клиента, который обрабатывает соединения и т. Д. Я только хочу добавить новую конфигурацию VPN и, возможно, удалить существующие.таких вопросов, но они все, кажется, до 4.0.Я понимаю, что раньше это было невозможно, но можно подумать, что новые API-интерфейсы VPN предоставляют такую ​​функциональность.Так кто-нибудь нашел способ сделать это, или это все еще невозможно?Если есть способ, пожалуйста, укажите мне правильное направление.

Ответы [ 2 ]

13 голосов
/ 22 марта 2012

Похоже, что это обрабатывается внутренне через классы com.android.settings.vpn2.VpnDialog (и связанные с ним), которые в основном делают KeyStore.getInstance().put("VPN_[VPN ID]", [encoded VpnProfile object]>) - что затем вызывает файлы с именами, такими как "/ data / misc / vpn /1000_VPN_ [VPN ID] "для создания (где, по-видимому, 1000 - это идентификатор системного процесса).

Используя отражение (или один из способов взлома для доступа к скрытым / внутренним API), вы можете сделать это самостоятельно, но посколькуваш процесс не будет работать как системный процесс, системный VPN-браузер их не увидит.

Однако, согласно этому (http://code.google.com/p/android/issues/detail?id=8915), существует хотя бы одно приложение, которое делает это безрутированный телефон, но источник, кажется, недоступен ... так что, возможно, есть какой-то способ сделать это, что я не могу понять - мне определенно было бы интересно, если есть.

PS- Вот еще один похожий вопрос (хотя он специально задает вопрос об использовании рутированного устройства): Создание профиля VPN на Android

0 голосов
/ 07 марта 2016

Да, есть способ. Используйте AndroidVpnService, он помогает вам создать интерфейс VPN на устройстве, существуют методы для его программной настройки.

...