2013-01-10 230 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 –

相关问题