Подтвердить что ты не робот

Как программно создать новый VPN-интерфейс с Android 4.0?

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

Есть много таких вопросов, но все они кажутся до 4.0. Я понимаю, что раньше это было невозможно, но можно подумать, что новые VPN-интерфейсы обеспечили такую ​​функциональность. Так кто-нибудь нашел способ сделать это, или это все еще невозможно? Если есть способ, пожалуйста, укажите мне правильное направление.

4b9b3361

Ответ 1

Похоже, что это обрабатывается внутренне через классы 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), есть хотя бы одно приложение, которое делает это без корневого телефона, но источник, похоже, не доступен... так что, возможно, есть способ сделать это, что я не могу понять - мне определенно было бы интересно, если есть.

P.S. - Здесь другой аналогичный вопрос (хотя он специально спрашивает об использовании корневого устройства): Создать профиль VPN на Android

Ответ 2

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