gpt4 book ai didi

android - WI-FI 开启但未连接网络

转载 作者:行者123 更新时间:2023-11-29 15:26:28 29 4
gpt4 key购买 nike

我正在开发一个需要检查互联网连接的 Android 应用程序。当设备的 WI-FI 关闭时它工作得很好但是当我打开 Wi-Fi 但没有连接到可用网络时,它是强制关闭。可能是什么问题?请帮助 bool 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;

}

最佳答案

你的问题是当你的设备连接到 WIFI 但 WIFI 没有连接到互联网时你返回 true。你可以通过编程方式执行 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;
}
}

关于android - WI-FI 开启但未连接网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12257295/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com