封装一个网络工具类 public class NetWorkUtil { /** * 判断是否有网络连接 * * @param context * @return */ public static boolean isNetworkConnected(Context context) { if (context != null) { // 获取手机所有连接管理对象(包括对wi-fi,net等连接的管理) ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); // 获取NetworkInfo对象 NetworkInfo networkInfo = manager.getActiveNetworkInfo(); //判断NetworkInfo对象是否为空 if (networkInfo != null) return networkInfo.isAvailable(); } return false; } /** * 判断WIFI网络是否可用 * * @param context * @return / public static boolean isWifiConnected(Context context) { if (context != null) { // 获取手机所有连接管理对象(包括对wi-fi,net等连接的管理) ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); // 获取NetworkInfo对象 NetworkInfo networkInfo = manager.getActiveNetworkInfo(); //判断NetworkInfo对象是否为空 并且类型是否为WIFI if (networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_WIFI) return networkInfo.isAvailable(); } return false; } /** * 判断MOBILE网络是否可用 * * @param context * @return */ public static boolean isMobileConnected(Context context) { if (context != null) { //获取手机所有连接管理对象(包括对wi-fi,net等连接的管理) ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); //获取NetworkInfo对象 NetworkInfo networkInfo = manager.getActiveNetworkInfo(); //判断NetworkInfo对象是否为空 并且类型是否为MOBILE if (networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) return networkInfo.isAvailable(); } return false; } /** * 获取当前网络连接的类型信息 * 原生 * * @param context * @return */ public static int getConnectedType(Context context) { if (context != null) { //获取手机所有连接管理对象 ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); //获取NetworkInfo对象 NetworkInfo networkInfo = manager.getActiveNetworkInfo(); if (networkInfo != null && networkInfo.isAvailable()) { //返回NetworkInfo的类型 return networkInfo.getType(); } } return -1; } /** * 获取当前的网络状态 :没有网络-0:WIFI网络1:4G网络-4:3G网络-3:2G网络-2 * 自定义 * * @param context * @return */ public static int getAPNType(Context context) { //结果返回值 int netType = 0; //获取手机所有连接管理对象 ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); //获取NetworkInfo对象 NetworkInfo networkInfo = manager.getActiveNetworkInfo(); //NetworkInfo对象为空 则代表没有网络 if (networkInfo == null) { return netType; } //否则 NetworkInfo对象不为空 则获取该networkInfo的类型 int nType = networkInfo.getType(); if (nType == ConnectivityManager.TYPE_WIFI) { //WIFI netType = 1; } else if (nType == ConnectivityManager.TYPE_MOBILE) { int nSubType = networkInfo.getSubtype(); TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); //3G 联通的3G为UMTS或HSDPA 电信的3G为EVDO if (nSubType == TelephonyManager.NETWORK_TYPE_LTE && !telephonyManager.isNetworkRoaming()) { netType = 4; } else if (nSubType == TelephonyManager.NETWORK_TYPE_UMTS || nSubType == TelephonyManager.NETWORK_TYPE_HSDPA || nSubType == TelephonyManager.NETWORK_TYPE_EVDO_0 && !telephonyManager.isNetworkRoaming()) { netType = 3; //2G 移动和联通的2G为GPRS或EGDE,电信的2G为CDMA } else if (nSubType == TelephonyManager.NETWORK_TYPE_GPRS || nSubType == TelephonyManager.NETWORK_TYPE_EDGE || nSubType == TelephonyManager.NETWORK_TYPE_CDMA && !telephonyManager.isNetworkRoaming()) { netType = 2; } else { netType = 2; } } return netType; } /** * 判断GPS是否打开 *ACCESS_FINE_LOCATION权限 * @param context * @return */ public static boolean isGPSEnabled(Context context) { //获取手机所有连接LOCATION_SERVICE对象 LocationManager locationManager = ((LocationManager) context.getSystemService(Context.LOCATION_SERVICE)); return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); } } 如果是在首页判断那就写在 MainActivity中调用NetWorkUtil 主要的代码在这里boolean b = NetWorkUtil.isNetworkConnected(this); IsBean isBean = new IsBean(); isBean.setFlag(b); EventBus.getDefault().post(isBean); } @Subscribe(threadMode = ThreadMode.MAIN) //在ui线程执行 public void onDataSynEvent(IsBean event) { if(event.isFlag()){ Toast.makeText(this,"在线",Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(this,"没网",Toast.LENGTH_SHORT).show(); } }
网络判断
最新推荐文章于 2019-06-19 20:20:25 发布