判断网络连接状态的方法

来源:互联网 发布:淘宝商城游戏装备 编辑:程序博客网 时间:2024/05/17 08:45

1.一种比较简单的方法,无论是连接wifi还是网络,都返回true:

private boolean isNetworkAvailable(Context context){

         boolean isWifiConnected = false;

         boolean isMobileConnected = false;

         ConnectivityManager conMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

         NetworkInfo networkInfo = conMgr.getActiveNetworkInfo();

         if(networkInfo  != null && networkInfo.isConnected()){

                  isWifiConnected  = networkInfo.getType() == ConnectivityManager.TYPE_WIFI;

                  isMobileConnected  = networkInfo.getType() == ConnectivityManager.TYPE_MOBILE;

         }


         return isWifiConnected || isMobileConnected;

}


2.一种比较详细的方法,即对每个状态作分析:

private final static int  ERR_NETWORK_NOT_AVAILABLE = -2;

private final static int  ERR_NETWORK_ROAMING_DISABLE = -1;

private final static int  OK_NETWORK_MOBILE = 0;

private final static int  OK_NETWORK_WIFI = 1;

private final static int  OK_NETWORK_ROAMING = 2;


private int isNetworkAvailable(Context context){

         ConnectivityManager conMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

         NetworkInfo networkInfo = conMgr.getActiveNetworkInfo();

         NetworkInfo mobileNetInfo = conMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

         NetworkInfo wifiNetInfo = conMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

         boolean isMobileConnected = mobileNetInfo.isConnected();

         boolean isWifiConnected = wifiNetInfo.isConnected();

         boolean isNetWorkAvailable = (networkInfo == null) ? false : (networkInfo.isAvailable());

         boolean isNetWorkConnected = (networkInfo == null) ? false : (networkInfo.isConnected());

         boolean isRoaming = mobileNetInfo.isRoaming(); //是否开启漫游


        if(isWifiConnected){

                  return OK_NETWORK_WIFI;

        }


        if(isMobileConnected){

               return isRoaming ? OK_NETWORK_ROAMING : OK_NETWORK_MOBILE;

         }

         if(isRoaming){

               if(!isNetWorkAvailable){                

                       return ERR_NETWORK_NOT_AVAILABLE;

               }


               return OK_NETWORK_ROAMING;

         }


         return isNetWorkAvailable ? OK_NETWORK_MOBILE : ERR_NETWORK_NOT_AVAILABLE;

}


原创粉丝点击