2015-01-19 14 views
6

Devo ottenere il tipo di sicurezza dalla voce WifiConfiguration. È possibile?Come ottenere la sicurezza WiFi (NONE, WEP, WPA, WPA2) dalla voce Android WifiConfiguration?

String getSecurityType(WifiConfiguration conf) { 
} 

valori di ritorno "NONE", "WEP", "WPA", "WPA2"

Per coloro che pensano che sia una domanda duplicato: voglio ottenere informazioni da WiFiConfiguration oggetto e non da ScanResult oggetto. Non è lo stesso!

+0

possibile duplicato di [Android: l'estrazione di funzionalità WiFi con Contiene] (http://stackoverflow.com/ domande/23637433/android-extracting-wifi-capabilities-with-contiene) – ozbek

+0

@ozbek No, non lo è. Ho bisogno di ottenere informazioni dall'elemento WiFiConfiguration non da ScanResult. –

risposta

7

posso farlo, semplicemente:

import android.net.wifi.WifiConfiguration; 
import android.net.wifi.WifiConfiguration.AuthAlgorithm; 
import android.net.wifi.WifiConfiguration.KeyMgmt; 

public static final int SECURITY_NONE = 0; 
public static final int SECURITY_WEP = 1; 
public static final int SECURITY_PSK = 2; 
public static final int SECURITY_EAP = 3; 

public static int getSecurity(WifiConfiguration config) { 
    if (config.allowedKeyManagement.get(KeyMgmt.WPA_PSK)) 
     return SECURITY_PSK; 

    if (config.allowedKeyManagement.get(KeyMgmt.WPA_EAP) || config.allowedKeyManagement.get(KeyMgmt.IEEE8021X)) 
     return SECURITY_EAP; 

    return (config.wepKeys[0] != null) ? SECURITY_WEP : SECURITY_NONE; 
} 

così ...

public static String getSecurityType(WifiConfiguration config) { 
    switch (getSecurity(config)) { 
     case SECURITY_WEP: 
      return "WEP"; 
     case SECURITY_PSK: 
      if (wifiConfiguration.allowedProtocols.get(WifiConfiguration.Protocol.RSN)) 
       return "WPA2"; 
      else 
       return "WPA"; 
     default: 
      return "NONE"; 
    } 
} 
Problemi correlati