2015-01-19 10 views
6

Potrzebuję uzyskać typ ochrony z wpisu WifiConfiguration. Czy to możliwe?Jak uzyskać zabezpieczenia WiFi (BRAK, WEP, WPA, WPA2) z wpisu WifiConfiguration systemu Android?

String getSecurityType(WifiConfiguration conf) { 
} 

powracający wartości "NONE", "WEP", "WPA", "WPA2"

Dla tych, którzy uważają, że to duplikat pytanie: Chcę, aby uzyskać informacje od WiFiConfiguration obiektu, a nie od ScanResult obiektu. To nie to samo!

+0

możliwy duplikat [Android: możliwości wydobycia z wifi zawiera] (http://stackoverflow.com/ pytania/23637433/android-wydobywanie-wifi-możliwości-z-zawiera) – ozbek

+0

@ozbek Nie, nie jest. Potrzebuję uzyskać informacje z elementu WiFiConfiguration nie z ScanResult. –

Odpowiedz

7

mogę to zrobić, po prostu:

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

więc ...

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"; 
    } 
} 
Powiązane problemy