Android检查手机是否有移动或无线连接问题

时间:2012-03-31 23:53:52

标签: android wireless

我有以下方法来检查我的设备是否有移动或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。

我已经过测试,以确保手机完全断开连接,因为我的其他任何应用都无法连接到互联网。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

我想你想像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

了解详情

答案 1 :(得分:0)

private static boolean checkInternetConnection(Activity _activity) {
ConnectivityManager conMgr = (ConnectivityManager) _activity.getSystemService(Context.CONNECTIVITY_SERVICE);
if (conMgr.getActiveNetworkInfo() != null &&  conMgr.getActiveNetworkInfo().isAvailable()
    && conMgr.getActiveNetworkInfo().isConnected()) 
return true;
else
return false;
}

如果您有任何可用/已连接的网络,则上述方法返回true