2015-01-19 15 views
6

Ich muss Sicherheitstyp von WifiConfiguration Eintrag erhalten. Ist es möglich?Wie bekomme ich WLAN-Sicherheit (KEINE, WEP, WPA, WPA2) von Android WifiConfiguration Eintrag?

String getSecurityType(WifiConfiguration conf) { 
} 

Rückkehr Werte "NONE", "WEP", "WPA", "WPA2"

Für diejenigen, die denken, dass es eine doppelte Frage: Ich möchte Informationen von WiFiConfiguration Objekt erhalten und nicht von ScanResult Objekt. Es ist nicht das gleiche!

+0

möglich Duplikat [Android: Extrahieren von Wi-Fi-Funktionen mit enthalten] (http://stackoverflow.com/ Fragen/23637433/android-extracting-wifi-Fähigkeiten-mit-enthält) – ozbek

+0

@ozbek Nein ist es nicht. Ich brauche Informationen von WiFiConfiguration Element nicht von ScanResult. –

Antwort

7

Ich kann es tun, einfach:

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; 
} 

so ...

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"; 
    } 
}