有时,我必须在我的 android 应用程序中检查互联网连接:

private boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null;
}

上面的代码只在一个 Network 可用时才有效!但是,我的设备有 wifi3G ,当我同时使用上面两种类型的网络连接时,上面的代码总是返回 false ! (当它返回 google.com 时,我仍然可以使用 false )!!我错过了什么?谢谢!

最佳答案

试试这个

private boolean haveNetworkConnection()
{
    boolean haveConnectedWifi = false;
    boolean haveConnectedMobile = false;

    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    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;
}

关于android - 在 Android 中检查 3G 和 Wifi 的互联网连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12687703/

10-11 07:18