Android互联网连接测试

时间:2012-02-20 08:53:33

标签: android

我有以下代码在调用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;
 }

有没有人有“经过验证的”方法来解决这个问题?

干杯,

麦克

4 个答案:

答案 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();
    }