我想创建一个与Internet和服务器以及Web服务一起工作的应用程序,我创建了一个检查网络可用的方法,我使用下面的方法:
private boolean isNetworkConnect() {
ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netinfo = cm.getActiveNetworkInfo();
if (netinfo != null && netinfo.isConnected()) {
netType = netinfo.getTypeName();
return true;
} else {
return false;
}
}
此方法只是指定Android中的移动网络的WiFi是启用或禁用,但这不足以上网,因为如果我禁用我的笔记本电脑WiFi,但我的模拟器中的Android应用程序说因为WiFi或移动互联网网络是启用,但如果打开浏览器并搜索任何网站都不是Access。!
我如何检查互联网访问,我在浏览器上搜索,从服务器和其他人读取。什么是最佳解决方案?
答案 0 :(得分:1)
您的代码看起来不错。我已在自己的应用程序中使用此代码。
出现此问题的原因是您使用模拟器测试应用程序。
如果您在真实设备isConnected()
方法上测试您的应用是否正常工作。
如果您想在模拟器上获得false
方法的isNetworkConnect()
,请转到
Settings > Wireless & network > Mobile network And uncheck "Data enabled"
答案 1 :(得分:0)
您的方法通常用于isOnline
方法。它不能通过发送数据包来工作,从而验证连接性。它基于国家,即您是否连接到WiFi或移动网络。现在,就像你的情况一样,可能没有任何实际的连接。
要专门回答您的问题,这是您可以做的最好的事情。但是,它无法确保真正的连接。
答案 2 :(得分:0)
试试这个(根据需要编辑)
public void testURL() throws Exception {
String strUrl = "http://stackoverflow.com/about";
try {
URL url = new URL(strUrl);
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
urlConn.connect();
assertEquals(HttpURLConnection.HTTP_OK, urlConn.getResponseCode());
} catch (IOException e) {
System.err.println("Error creating HTTP connection");
e.printStackTrace();
throw e;
}
}