请检查以下代码
public boolean isOnline() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
int networkType = ConnectivityManager.TYPE_WIFI;
return cm.requestRouteToHost(networkType, lookupHost("http://www.ati.ag"));
//return cm.getActiveNetworkInfo().isConnectedOrConnecting();
}
public static int lookupHost(String hostname) {
InetAddress inetAddress;
try {
inetAddress = InetAddress.getByName(hostname);
} catch (UnknownHostException e) {
return -1;
}
byte[] addrBytes;
int addr;
addrBytes = inetAddress.getAddress();
addr = ((addrBytes[3] & 0xff) << 24)
| ((addrBytes[2] & 0xff) << 16)
| ((addrBytes[1] & 0xff) << 8)
| (addrBytes[0] & 0xff);
System.out.println(addr);
return addr;
}
isOnline总是返回false,请帮助它是如何工作的? 或者,请告诉我有关检查服务器连接的任何其他方法 基本目的是检查,互联网是否在本地wifi上可用
答案 0 :(得分:0)
您需要为InetAddress.getByName
指定主机名,而不是URL,因此这一行:
return cm.requestRouteToHost(networkType, lookupHost("http://www.ati.ag"));
应该是:
return cm.requestRouteToHost(networkType, lookupHost("www.ati.ag"));
可能这会更好。
答案 1 :(得分:0)
作为您的方法的替代方案,如果您的目的只是检查Wifi是否可用,您可以试试这个。这对我有用:
ConnectivityManager cm=(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
if(cm==null)
return false;
NetworkInfo networkInfo=cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if(networkInfo==null)
return false;
return networkInfo.isConnected();