在设备上使用静态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;
}
答案 0 :(得分:0)
使用此方法....我希望它对您有所帮助。
公共布尔检查网络连接(上下文上下文){
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (activeNetwork != null) {
return activeNetwork.isConnectedOrConnecting();
}
NetworkInfo wifiNetwork = cm
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (wifiNetwork != null) {
return wifiNetwork.isConnectedOrConnecting();
}
NetworkInfo mobileNetwork = cm
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (mobileNetwork != null) {
return mobileNetwork.isConnectedOrConnecting();
}
NetworkInfo otherNetwork = cm.getActiveNetworkInfo();
if (otherNetwork != null) {
return otherNetwork.isConnectedOrConnecting();
}
return false;
}
答案 1 :(得分:0)
以下是您可以在您的情况下使用的内容。如果您连接到wifi / 3g,此功能将返回true
,您可以加载任何网页。
public static boolean isOnline(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
}
return false;
}
public static boolean chkNetworkStatus(Context context) {
boolean result = false;
new Thread() {
@Override
public void run() {
for(int i=0;i<3;i++){
HttpGet requestForTest = new HttpGet("http://m.google.com");
try {
new DefaultHttpClient().execute(requestForTest);
responded = true;
} catch (Exception e) {
responded = false;
}
}
}
}.start();
boolean isOnline = isOnline(context);
if(responded && isOnline){
result = true;
} else {
result = false;
}
Log.e("","responded : "+responded);
return result;
}