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