我使用此代码检查设备是否在线,因为应用程序加载。
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。