我正在尝试在我正在开发的新Android应用程序上设置自动化测试但是在使用其中一个api时遇到了一些麻烦
我面临的问题是我想在wifi连接后开始测试,而不是在连接状态下。我已经尝试了两个解决方案,但没有运气,测试似乎在我的Android设备完全连接之前启动(wifi栏上没有x)
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以确定是否已建立连接的第一个实现。但测试仍然在完成连接之前开始,并且设置失败。
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 :(得分:4)
而不是手动获取networkinfo ...尝试获取“当前活动”的网络并检查是否是wifi。注意:如果为null,则表示没有连接网络...因此它将替换isConnected调用。
ConnectivityManager connManager =
(ConnectivityManager) con.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo current = connManager.getActiveNetworkInfo();
boolean isWifi = current != null && current.getType() == ConnectivityManager.TYPE_WIFI;
答案 1 :(得分:3)
如果要将其称为“ping”,请发送“ping”。如果连接完成,您知道您仍然连接。如果您获得IOException
或NullPointerException
,那么您可能会超时并且不再连接。
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();
}
答案 2 :(得分:0)
wifiManager.getWifiState()== WifiManager.WIFI_STATE_ENABLED
(当您获得完全连接时)