2011-06-16 15 views
6

Tengo un oyente que escucha los cambios de conectividad, especialmente de GSM a WIFI. Ahora quisiera registrar a qué WIFI se conecta el usuario, especialmente el tipo de encriptación (ninguno, WEP, WPA, WPA2, ...) de WIFI.Android: ¿Cómo obtener el cifrado Wifi actual?

El oyente funciona perfectamente, pero no encuentro ninguna forma de obtener el tipo de encriptación actual de Wifi.

Gracias por su ayuda.

Respuesta

7

Utilice WifiManager para obtener detalles de la conexión actual, y luego obtenga WifiConfiguration que le proporcionará más información.

WifiManager wifiManager= (WifiManager) getSystemService(Context.WIFI_SERVICE); 
WifiInfo wi = WifiManager.getConnectionInfo(); 
if(wi != null) 
{ 
    WifiConfiguration activeConfig = null; 
    for(WifiConfiguration conn : wifiManager.getConfiguredNetworks()) 
    { 
     if(conn.status == WifiConfiguration.Status.CURRENT) 
     { 
      activeConfig = conn; 
      break; 
     } 
    } 
    if(activeConfig != null) 
    { 
     // Analyse encryption of connected network here. 
    } 
} 
+0

¡Gracias! Lo encontré, pero parece que la única forma de obtener WifiConfiguration parece ser WindowManager.getConfiguredNetworks() que devuelve una lista . Ahora podría obtener el WiFi actual, es decir, a través del BSSID, o ¿la red actualmente conectada es siempre la primera en la lista? – Tobi

+3

Gracias por su ayuda, Mark. Acabo de encontrar otra forma de obtener wifi actual, a través de la bandera WifiConfiguration.status. Esto tiene que ser igual a WifiConfiguration.Status.CURRENT – Tobi

+0

¡Buen hallazgo! No estaba enterado de eso. Debería hacer que el código sea un poco más eficiente. Por favor, "acepta" la respuesta si la has encontrado útil. –