检查Internet连接的代码无法正常工作

时间:2013-08-17 04:38:26

标签: android

我正在开发一个应用程序,我需要检查是否有互联网连接。我写的代码似乎处理所有情况但它在我的模拟器中不起作用。我的代码:

public boolean hasConnection() {
        ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

        NetworkInfo wifiNetwork = cm
                .getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        if (wifiNetwork != null && wifiNetwork.isConnected()) {
            return true;
        }

        NetworkInfo mobileNetwork = cm
                .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        if (mobileNetwork != null && mobileNetwork.isConnected()) {
            return true;
        }

        NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
        if (activeNetwork != null && activeNetwork.isConnected()) {
            return true;
        }
        return false;
    }

问题是它永远不会返回false无论互联网连接是否可用,无论是在设备还是在我的模拟器中。但如果设备连接wifi连接,它运行良好。这个片段有什么问题?

1 个答案:

答案 0 :(得分:-1)

尝试这种方法。

private boolean IsNetworkAvailable() {
    ConnectivityManager mConnectivityManager 
          = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo mActiveNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
    return mActiveNetworkInfo != null && mActiveNetworkInfo.isConnected();
}

您还需要:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />