在我在Emulator上测试的应用程序中,我使用以下代码检查网络连接(WiFi):

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

此方法始终返回true,即使禁用计算机的无线连接…
这是仿真器引起的还是其他原因?
如果这不是检查网络连接的正确方法,我该怎么做?

最佳答案

最好(1)在上下文中传递,以便每个活动都可以调用此函数,并且(2)使此函数保持静态:

 public boolean isNetworkOnline() {
    boolean status=false;
    try{
        ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getNetworkInfo(0);
        if (netInfo != null && netInfo.getState()==NetworkInfo.State.CONNECTED) {
            status= true;
        }else {
            netInfo = cm.getNetworkInfo(1);
            if(netInfo!=null && netInfo.getState()==NetworkInfo.State.CONNECTED)
                status= true;
        }
    }catch(Exception e){
        e.printStackTrace();
        return false;
    }
    return status;

    }

08-26 07:22