我有以下代码在调用AsyncTask方法之前检查是否存在Internet连接,“Task”然后从Internet检索信息。如果手机处于飞行模式,或者如果手机没有连接到外部无线网络,那么它似乎真的有用,即不能在手机计划附带的互联网上工作。
如果手机连接到外部无线调制解调器但调制解调器未连接到互联网,我会强行关闭!
if (isOnline()) {
new Task().execute();
} else {
Toast.makeText(this, "There seems to be no internet access, please try again later!", Toast.LENGTH_LONG).show();
}
和
public boolean isOnline() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
}
return false;
}
有没有人有“经过验证的”方法来解决这个问题?
干杯,
麦克
答案 0 :(得分:8)
我用来检查If case
netInfo .isAvailable()
我认为这是唯一的方法,我们可以知道互联网是否可用。
答案 1 :(得分:4)
检查此代码段
try {
ConnectivityManager nInfo = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
nInfo.getActiveNetworkInfo().isConnectedOrConnecting();
Log.d(tag, "Net avail:"
+ nInfo.getActiveNetworkInfo().isConnectedOrConnecting());
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
Log.d(tag, "Network available");
return true;
} else {
Log.d(tag, "Network not available");
return false;
}
} catch (Exception e) {
return false;
}
确保您已在 android-manifest.xml
中编写了以下权限详细信息<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
查看以下问题以获取更多详细信息 android network connectivity
答案 2 :(得分:0)
不,它不适合每种模式都能正常工作。我试着用这个
public boolean isOnline() {
boolean flag = false;
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm.getActiveNetworkInfo() != null) {
flag = cm.getActiveNetworkInfo().isConnectedOrConnecting();
}
return flag;
}
答案 3 :(得分:0)
检查出来:
ConnectivityManager cm,cm1;
private static boolean isConnected(Context context) {
NetworkInfo networkInfo = null;
if (cm != null) {
networkInfo = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
}
return networkInfo == null ? false : networkInfo.isConnected();
}
private static boolean isConnected1(Context context) {
NetworkInfo networkInfo1 = null;
if (cm1 != null) {
networkInfo1 = cm1.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
}
return networkInfo1 == null ? false : networkInfo1.isConnected();
}