Detectar detrás de VPN en android

Cómo detectar programatically si el tráfico está pasando a través de VPN sin usar la intención de conectarse a VPNService. ¿Hay alguna llamada al sistema?

El sistema operativo Android es consciente de cuándo está activa una conexión VPN (ya que muestra un icono en la barra de estado durante la duración de una conexión VPN) pero no hay un método API público (que aparecería en el VpnService) para comprobar si hay una conexión activa conexión.

Se producen dos soluciones. Si se trata de una situación específica en la que conoce la topología de red, ejecute 'ping' para ver si una dirección IP particular está disponible: use System.exec . El comando ping está presente en dispositivos Android con ROM de stock, lo he utilizado como parte de una solución para proporcionar una vista más granular del estado de una conexión de datos (dirección IP no asignada, dirección IP asignada, pero no se puede acceder El Internet, puede tener acceso al Internet)

Una mejor solución sería ejecutar una traceroute en su lugar y analizar la salida. No he comprobado si traceroute está presente en dispositivos Android con ROMs de stock, editaré esta respuesta más tarde con información más completa.

Esto funciona :

 private boolean checkVPN() { ConnectivityManager cm = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE); return cm.getNetworkInfo(ConnectivityManager.TYPE_VPN).isConnectedOrConnecting(); } 

Es posible comprobarlo en la API de Android 21 un mayor, pero parece que no funciona, no sé (en nexus 5 @ 5.0.1, nexus 7 @ 5.0.2) por qué …

Snippet de la nueva API para comprobarlo (y todo el tráfico se enruta por vpn si está conectado):

  @Inject boolean checkVPN(ConnectivityManager connMgr) { //don't know why always returns null: NetworkInfo networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_VPN); boolean isVpnConn = networkInfo == null ? false : networkInfo.isConnected(); return isVpnConn; } 
  • Cree una conexión VPN L2TP / IPSec mediante programación en Android
  • Desvío de paquetes VPN
  • ¿Cómo funciona la VPN en Android y la lista de API disponibles? (chupete)
  • Roboblender-3.0.1.jar: no incluido en Android: javax.tools. Referido desde com.google.inject.blender.AnnotationDatabaseGenerator
  • Android vpn conexión de forma programática
  • Crear VPN en Android mediante programación
  • Cómo crear un perfil VPN y conectarse a él en android mediante programación?
  • No se puede utilizar el nuevo marco de Android VpnService 4.0
  • Determinación de Android VPN Interfaz / IP?
  • Conectar pptp vpn con android vpnservice
  • ¿Hay alguna manera de crear un proxy HTTP en VPN en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.