connectivitymanager.getActiveNetworkInfo()在Internet关闭时返回true(Android)?

connectivitymanager.getActiveNetworkInfo()在Internet关闭时返回true(Android)?,android,connectivity,Android,Connectivity,这是我用来确定手机是否连接到互联网的代码: public boolean isOnline() { ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo netInfo = cm.getActiveNetworkInfo(); if (netInfo != null && netIn

这是我用来确定手机是否连接到互联网的代码:

public boolean isOnline() {
    ConnectivityManager cm =
        (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    if (netInfo != null && netInfo.isConnectedOrConnecting()) {
        return true;
    }
    return false;
}

在模拟器上,即使我关闭电脑的Wi-Fi,这也会返回真值。我在模拟器最上面的条上看到了一个
3G
标志,即使电脑不上网。我的代码是否有问题,或者这是仿真器的问题?

如果要确定在调用
isOnline
时设备是否已连接,则应调用
isConnected
,而不是
isConnectedOrConnecting


通常,模拟器上的硬件特性API存在许多问题/bug,这可能是其中之一。您的代码很好。

emulator中有一个飞行模式(我猜)。关闭它,该方法应返回
false
您能确认此代码在真实设备上工作吗?谢谢。是的,我将尝试在我的设备上运行它。它在我的Galaxy S2上按预期工作:
isOnline
当设备在WiFi或蜂窝网络上时返回true,当它们都不在时返回false。