我有以下方法来检查我的设备是否具有移动或wifi连接:

public static boolean haveNetworkConnection(ConnectivityManager cm) {
    boolean haveConnectedWifi = false;
    boolean haveConnectedMobile = false;

    NetworkInfo[] netInfo = cm.getAllNetworkInfo();
    for (NetworkInfo ni : netInfo) {
        if (ni.getTypeName().equalsIgnoreCase("WIFI"))
            if (ni.isConnected())
                haveConnectedWifi = true;
        if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
            if (ni.isConnected())
                haveConnectedMobile = true;
    }
    return haveConnectedWifi || haveConnectedMobile;
}


当手机连接到wifi时,代码似乎可以正常工作(返回true),但是,当手机未连接时,该方法仍然返回true。

我已进行测试,以确保手机完全断开,因为我的其他应用程序都无法连接到Internet。

任何帮助将不胜感激。

最佳答案

我认为您想像这样使用ConnectivityManager

ConnectivityManager cm =
    (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork.isConnectedOrConnecting();
boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;


http://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html上了解有关它的更多信息

10-08 03:31