NetWorkUtil网络状态

1.首先呢,我们设置网络状态的常量

public class NetWorkStatusConstants {
    /**
     * Unknown network class
     */
    public static final int NETWORK_CLASS_UNKNOWN = 0;
    /**
     * wifi networks
     */
    public static final int NETWORK_WIFI          = 1;
    /**
     * "2G" networks
     */
    public static final int NETWORK_CLASS_2_G     = 2;
    /**
     * "3G" networks
     */
    public static final int NETWORK_CLASS_3_G     = 3;
    /**
     * "4G" networks
     */
    public static final int NETWORK_CLASS_4_G     = 4;
}

NetWorkUtil

public class NetWorkUtil {

    /**
     * 获得网络连接是否可用
     * @param context
     * @return
     */

    public static boolean hasNetwork(Context context) {
        ConnectivityManager con = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo workinfo = con.getActiveNetworkInfo();
        if (workinfo == null || !workinfo.isAvailable()) {
            return false;
        }
        return true;
    }

    /**
     * 判断是否是wifi连接
     */

    public static boolean checkWifiState(Context context) {
        boolean isWifiConnect = true;
        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo[] networkInfos = cm.getAllNetworkInfo();
        for (int i = 0; i < networkInfos.length; i++) {
            if (networkInfos[i].getState() == NetworkInfo.State.CONNECTED) {
                if (networkInfos[i].getType() == cm.TYPE_MOBILE) {
                    isWifiConnect = false;
                }
                if (networkInfos[i].getType() == cm.TYPE_WIFI) {
                    isWifiConnect = true;
                }
            }
        }
        return isWifiConnect;
    }

    /**
     * 获取手机连接的网络类型状态 WIFI/2G/3G/4G
     */

    public static int getNetWorkStatus(Context context) {

        int netWorkType = NetWorkStatusConstants.NETWORK_CLASS_UNKNOWN;

        ConnectivityManager connectivityManager = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();

        if (networkInfo != null && networkInfo.isConnected()) {
            int type = networkInfo.getType();
            if (type == ConnectivityManager.TYPE_WIFI) {
                netWorkType = NetWorkStatusConstants.NETWORK_WIFI;
            } else if (type == ConnectivityManager.TYPE_MOBILE) {
                netWorkType = getNetWorkClass(context);
            }
        }
        return netWorkType;
    }

    /**
     * 获取手机连接的网络类型是2G/3G/4G
     */

    public static int getNetWorkClass(Context context) {
        TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

        switch (telephonyManager.getNetworkType()) {

            case TelephonyManager.NETWORK_TYPE_GPRS:
            case TelephonyManager.NETWORK_TYPE_EDGE:
            case TelephonyManager.NETWORK_TYPE_CDMA:
            case TelephonyManager.NETWORK_TYPE_1xRTT:
            case TelephonyManager.NETWORK_TYPE_IDEN:
                return NetWorkStatusConstants.NETWORK_CLASS_2_G;
            case TelephonyManager.NETWORK_TYPE_UMTS:
            case TelephonyManager.NETWORK_TYPE_EVDO_0:
            case TelephonyManager.NETWORK_TYPE_EVDO_A:
            case TelephonyManager.NETWORK_TYPE_HSDPA:
            case TelephonyManager.NETWORK_TYPE_HSUPA:
            case TelephonyManager.NETWORK_TYPE_HSPA:
            case TelephonyManager.NETWORK_TYPE_EVDO_B:
            case TelephonyManager.NETWORK_TYPE_EHRPD:
            case TelephonyManager.NETWORK_TYPE_HSPAP:
                return NetWorkStatusConstants.NETWORK_CLASS_3_G;
            case TelephonyManager.NETWORK_TYPE_LTE:
                return NetWorkStatusConstants.NETWORK_CLASS_4_G;
            default:
                return NetWorkStatusConstants.NETWORK_CLASS_UNKNOWN;
        }
    }
}

使用

 int netWorkStatus = NetWorkUtil.getNetWorkStatus(MainActivity.this);
 if (NetWorkStatusConstants.NETWORK_WIFI == netWorkStatus) {
                                DownloadUtil downloadUtil = new DownloadUtil(MainActivity.this);
                                downloadUtil.download(HttpUrlConstants.SERVER_RESOUSE_URL + url);
                            }else if (NetWorkStatusConstants.NETWORK_CLASS_UNKNOWN == netWorkStatus) {
                                ToastUtil.showMsg(MainActivity.this, "网络不可用,请检查网络");
                            } else {
                                dialog1 = UiUtil.createDialog(MainActivity.this, "温馨提示", "取消", "更新", "处于移动网络,是否下载!", new View.OnClickListener() {
                                            @Override
                                            public void onClick(View view) {
                                                if ((boolean) view.getTag()) {
                                                    dialog1.dismiss();
                                                } else {
                                                    dialog1.dismiss();
                                                    DownloadUtil downloadUtil = new DownloadUtil(MainActivity.this);
                                                    downloadUtil.download(HttpUrlConstants.SERVER_RESOUSE_URL + url);
                                                }
                                            }
                                        }
                                );

                            }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值