使用Context.CONNECTIVITY_SERVICE检查Internet连接

Nav*_*oid 3 networking android

我正在使用此代码检查互联网连接:

private boolean checkInternetConnection() {
    ConnectivityManager cm = (ConnectivityManager)
                              getSystemService(Context.CONNECTIVITY_SERVICE);
    // test for connection
    if (cm.getActiveNetworkInfo() != null
            && cm.getActiveNetworkInfo().isAvailable()
            && cm.getActiveNetworkInfo().isConnected()) {
        return true;
    } else {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

但即使我关闭wifi,它仍然会返回true.

在仿真器和设备上尝试了相同的结果?
怎么了 ?

use*_*305 6

这个简单的代码适用于我的情况:

public boolean netConnect(Context ctx)
{
    ConnectivityManager cm;
    NetworkInfo info = null;
    try
    {
        cm = (ConnectivityManager) 
              ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
        info = cm.getActiveNetworkInfo();
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
    if (info != null)
    {
        return true;
    }
    else
    {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

还有这一个......

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