2012-11-01 74 views
0

我希望做一個getConnectState()布爾函數。我使用下面的兩種方式。我不知道爲什麼在某些情況下會有不同的結果。就像當我打開WiFi時,有時第一個將返回true,但第二個返回false;在這種情況下,WiFi正在開放但尚未連接,我希望我能弄虛作假。任何人都可以向我解釋爲什麼第一個功能告訴我WiFi已啓用。android爲什麼得到不同的wifi連接狀態

WifiManager wifiManager=(WifiManager) context.getSystemService(Context.WIFI_SERVICE); 
    if(wifiManager.getWifiState()==WifiManager.WIFI_STATE_ENABLED) 
     return true; 
    else 
     return false; 

ConnectivityManager conManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo networInfo = conManager.getActiveNetworkInfo(); 
    if (networInfo == null || !networInfo.isAvailable()) { 
     return false; 
    } 
    return true; 

回答

2
WifiManager.WIFI_STATE_ENABLED 

只檢查如果WiFi連接被啓用,如果連接不檢查。您可以通過使用檢查連接的狀態:

ConnectivityManager conManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
NetworkInfo networInfo = conManager.getActiveNetworkInfo(); 
if(networInfo.getState()==State.CONNECTED) 

,如果你想確保網絡使用WIFI可以使用

networInfo.getType()==connection.TYPE_WIFI