【发布时间】:2012-02-05 19:43:59
【问题描述】:
在设备上使用静态 IP 时检测互联网连接几乎没有问题。虽然我在没有设置任何静态 ip 的情况下进行连接,但用于检测可用连接的功能正常工作。但是当我设置静态 IP 时,函数返回 true,因为我连接到 Wifi 或 3G,但我没有任何互联网连接,所以我的应用程序在这种情况下崩溃了。任何想法如何在使用静态 IP 时解决该问题? 这是我正在使用的:
public boolean chkNetworkStatus(Context context) {
ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity == null) {
Toast.makeText(context, "No available connection!", Toast.LENGTH_LONG);
} else {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null) {
for (int i = 0; i < info.length; i++) {
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
}
}
return false;
}
【问题讨论】:
-
您粘贴的代码是正确的,所以可能您的问题不在这里。
-
代码中没有。当我不使用静态 IP 时,一切正常,但如果我将选项设置为使用静态,我什至无法在设备上打开网站,但检查网络是否通过 true,因为我已连接到 Wifi 或 3G,但我无法访问互联网。这就是它崩溃的原因。
-
info[i].getState() == NetworkInfo.State.CONNECTED 只检查
network connected, but can not identify can connect to the web, public boolean isConnected() 因为:API Level 1 表示网络连接是否存在并且可以建立连接并传递数据。
标签: android httpurlconnection static-ip-address