无线网络已连接但未连接到网络
我正在开发一个需要检查网络连接的Android应用程序。当设备的WI-FI关闭时,它工作得很好,但是当我打开Wi-Fi时,但是不要连接到可用的网络,这是力closing.What可能是问题?请帮助 布尔isNetworkConnectionAvailable(){无线网络已连接但未连接到网络
boolean connected = false;
ConnectivityManager cm =(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm != null) {
NetworkInfo ni = cm.getActiveNetworkInfo();
if(ni != null){
if(ni.isConnected())
connected = true;
else
connected=false;
}
}
return connected;
}
你的问题是你返回true当你的遗赠是连接到WIFI,但WIFI不连接到internet.You可以通过执行ping命令以编程方式解决此问题。
想法:
1)检查你的连接到WIFI。
2)如果你连接到wifi ping来检查网络可用性。
代码:
public static boolean isOnline(Context con,String url){
ConnectivityManager cm = (ConnectivityManager)con.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
if(u!=null){
return ping(url);
}else{
return true;
}
}else{
return false;
}
}
Ping方法:
public static boolean ping(String u) {
try {
URL url = new URL(u);
HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
urlc.setConnectTimeout(500); // Time is in Milliseconds to wait for ping response
urlc.connect();
if (urlc.getResponseCode() == 200) {
Log.i(TAG, "* ping with ResponseCode: "+urlc.getResponseCode());
return true;
}else{
Log.i(TAG, "* Connection is too slow with ResponseCode: "+urlc.getResponseCode());
return false;
}
}catch (MalformedURLException e1){
Log.e(TAG,"Erroe in URL to ping"+e1);
return false;
}catch (IOException e){
Log.e(TAG,"Error in ping"+e);
return false;
}
}
其实我的WI-FI连接需要证书。如果我穿上我的WI-FI并且不输入证书,我将无法访问internet.That是它给予例外的地方。如果我关闭wi-fi,我的代码是完美的工作,但当我打开WI-FI,不输入凭据,因为我还没有连接到互联网,所以它应该返回false,但它只返回true.Thank你的回应,但我只是想给互联网连接不可用的用户发消息。 –
作为一名程序员,您不应该担心用户网络连接到用户。程序员必须做的是以编程方式处理不可用的可用性,以上代码将解决该问题。如果返回false,则必须根据上述代码向用户发送有关网络可用性的通知。 –
但是,如果我启动WI-FI,并且没有与互联网通话的连接,则URL会给我一个异常。我想要做的是如果设备未连接,则不应该调用url而不是提供异常。在调用google页面时, –
什么是例外? – Abhi
我看不到例外,因为无法在模拟器上测试应用程序。 –