2015-01-19 10 views
6

Güvenlik türünü WifiConfiguration girişinden almam gerekiyor. Mümkün mü?Android WifiConfiguration girişinden WiFi güvenliği (NONE, WEP, WPA, WPA2) nasıl edinilir?

String getSecurityType(WifiConfiguration conf) { 
} 

dönen değerleri bir yinelenen soru düşünenler için "NONE", "WEP", "WPA", "WPA2"

: Ben ScanResult nesneden WiFiConfiguration nesne değil bilgi almak istiyorum. Aynı şey değil!

+0

olası yinelenen [Android: wifi yetenekleri ayıklanması içeren ile] (http://stackoverflow.com/ sorular/23637433/android-extracting-wifi-yetenekleri-içeren) – ozbek

+0

@ozbek Hayır değil. ScanResult'dan değil WiFiConfiguration öğesinden bilgi almam gerekiyor. –

cevap

7

ben sadece bunu yapabilirsiniz:

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

yüzden ve ...

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