我使用此代码检查设备是否在线,因为应用程序加载。

public boolean isOnline()
{
    ConnectivityManager connMgr = (ConnectivityManager)
            getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
    return (networkInfo != null && networkInfo.isConnected());
}

但即使关闭了计算机wifi进行测试,这也总是会返回真值。这个函数只是测试连接的能力还是实际连接?
谢谢!

最佳答案

尝试使用:

private boolean isOnline()
    {
        try
        {
            ConnectivityManager cm = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
            return cm.getActiveNetworkInfo().isConnectedOrConnecting();
        }
        catch (Exception e)
        {
            return false;
        }
    }

其中mContext是您正在使用的上下文。
我的猜测是,你的代码在设备上运行良好,但你可能在模拟器上测试。我注意到,有时仿真器保持连接,即使计算机的互联网关闭。要实现正确的功能,您应该进入设置并禁用WiFi和移动数据,而不是关闭计算机WiFi。
此外,如果设备正在连接,我上面给出的代码也将返回true,而您正在使用的代码只有在您已经建立了连接的情况下才会返回true。

10-05 22:43