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


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

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

2 27

2 ответа:

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

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

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

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

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