android vpn android-4.0

¿Cómo crear programáticamente una nueva interfaz VPN con Android 4.0?



android-4.0 (2)

Me gustaría saber si es posible crear una interfaz VPN mediante programación con las nuevas API de VPN en Android 4.0. He buscado en http://developer.android.com/resources/samples/ToyVpn pero se trata de crear un cliente VPN completo que maneje las conexiones, etc. Solo quiero agregar una nueva configuración VPN y posiblemente eliminar las existentes.

Hay muchas preguntas como esta pero todas parecen ser anteriores a 4.0. Entiendo que anteriormente esto no era posible, pero uno pensaría que las nuevas API de VPN proporcionaban dicha funcionalidad. Entonces, ¿alguien ha encontrado una manera de hacer esto, o todavía no es posible? Si hay una manera, por favor, señame la dirección correcta.


Sí, hay una manera. Use AndroidVpnService, le ayuda a crear una interfaz VPN en el dispositivo, existen métodos para configurar eso mediante programación.


Parece que esto se maneja internamente a través de las clases com.android.settings.vpn2.VpnDialog (y relacionadas), que básicamente hacen KeyStore.getInstance().put("VPN_[VPN ID]", [encoded VpnProfile object]>) - que luego hace que se creen los archivos con nombres como "/ data / misc / vpn / 1000_VPN_ [VPN ID]" (donde 1000 es aparentemente la ID del proceso del sistema).

Usando la reflexión (o uno de los hacks para acceder a las API ocultas / internas) puede hacerlo usted mismo, pero debido a que su proceso no se ejecutará como el proceso del sistema, el navegador VPN del sistema no los verá.

Sin embargo, según esto ( http://code.google.com/p/android/issues/detail?id=8915 ), hay al menos una aplicación que hace esto sin un teléfono rooteado, pero la fuente no parece estar disponible ... así que tal vez haya alguna forma de hacer esto que no pueda entender. Definitivamente me interesaría si lo hubiera.

PD: aquí hay otra pregunta similar (aunque está preguntando específicamente sobre el uso de un dispositivo rooteado): Crear un perfil VPN en Android