网络判断

来源:互联网 发布:淘宝上的全球购物流 编辑:程序博客网 时间:2024/06/03 18:39
封装一个网络工具类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();    }}


 
原创粉丝点击