2013-01-10 125 views
4

我試圖設置一個測試自動化上一個新的Android應用程序,我正在開發,但有一個麻煩與apis如何以編程方式確定android是否連接到wifi?

我面臨的問題是我想開始測試WiFi後有連接,而不是當它處於連接狀態。我已經嘗試了兩種解決方案,但沒有運氣和測試似乎

wifiManager.setWifiEnabled(state); 
WifiInfo wifiInfo = wifiManager.getConnectionInfo(); 
while (wifiInfo.getSSID() == null) { 
    Log.i("WifiStatus", "Here I am"); 
    Thread.sleep(Time.ONE_SECOND); 
    wifiInfo = wifiManager.getConnectionInfo(); 

這是我第一次執行試圖獲取SSID,以確定是否連接開始之前我的Android設備被完全連接(在無線條無X)已經建立。但是在全連接完成之前測試仍然開始,並且設置失敗。

ConnectivityManager connManager = 
    (ConnectivityManager) con.getSystemService(Context.CONNECTIVITY_SERVICE); 
NetworkInfo networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

wifiManager.setWifiEnabled(state); 
while (!networkInfo.isConnected()) { 
    Log.i("WifiStatus", "Here I am"); 
    Thread.sleep(Time.ONE_SECOND); 
    networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
} 

我使用的連接管理器,而不是使用isConnected()第二種方案。

有沒有人有另一種方法,我可以檢查以確定設備是否已完全建立與WiFi的連接?

+0

也許某種ping到google.com? – twoleggedhorse

+0

謝謝!我實際上不得不求助於這種方法來確定與網絡的完整連接。 – kptkev

回答

3

發送一個「ping」,如果你想調用它。如果連接完成,您知道您仍然連接。如果您獲得IOExceptionNullPointerException,那麼您可能超時並且不再連接。

try { 
     URL url = new URL("http://www.google.com"); 
     HttpURLConnection urlConnect = (HttpURLConnection) url.openConnection(); 
     urlConnect.setConnectTimeout(1000); 
     urlConnect.getContent(); 
     System.out.println("Connection established."); 
    } catch (NullPointerException np) { 
     np.printStackTrace(); 
    } catch (IOException io) { 
     io.printStackTrace(); 
    } 
+3

這將如何告知來自3G或EDGE連接的Wi-Fi連接? – 9000

+0

詢問確定設備是否連接到** WI-FI **而不是蜂窩網絡的問題。 – syb0rg

+0

感謝syb0rg!幫了很多忙。不能確定我使用的api是否已經處理好了,但這是解決問題的方法。 – kptkev

4

而不是手動獲取網絡信息...嘗試獲取'當前活動'的網絡,並檢查如果這是WiFi。注意:如果它爲空,表示沒有網絡連接...所以它將取代isConnected呼叫。

ConnectivityManager connManager = 
    (ConnectivityManager) con.getSystemService(Context.CONNECTIVITY_SERVICE); 
NetworkInfo current = connManager.getActiveNetworkInfo(); 
boolean isWifi = current != null && current.getType() == ConnectivityManager.TYPE_WIFI; 
+0

由於某種原因,當我使用這個,我遇到了它連接的問題,但有限的連接性,並繼續我不想要它做的測試:( – kptkev

+0

@Felix我想在Android設備連接WI-FI那一次我想調用更新數據庫的API –

相關問題