手机网络状态查询工具类

package com.mystudy.kibi.utils;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.telephony.TelephonyManager;

/**
 * Created by KIBI熊 on 16/6/27.
 */
public class NetworkStateUtil {

    static ConnectivityManager connectivityManager = null;
    static TelephonyManager telephonyManager = null;
    static NetworkInfo curNetworkInfo = null;
    static NetworkInfo wifiNetworkInfo = null;
    static NetworkInfo mobileNetworkInfo = null;

    public static final int NONE_TYPE = -1;
    public static final int WIFI_TYPE = 0;
    public static final int WAP_TYPE = 1;
    public static final int NET_TYPE = 2;

    /**
     * 判断当前是否连接网络且可用
     * @param context
     * @return
     */
    public static boolean isNetworkConnected(Context context){
        if(context != null){
            connectivityManager = (ConnectivityManager) context
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
            curNetworkInfo = connectivityManager.getActiveNetworkInfo();
            if(curNetworkInfo != null){
                return curNetworkInfo.isAvailable();
            }
        }
        return false;
    }

    /**
     * 判断该设备的Wi-Fi功能是否可用
     * 无论连没连到Wi-Fi,只要设备打开了Wi-Fi功能,返回的都是true
     *
     * @param context
     * @return
     */
    public static boolean isWIFIAvailable(Context context){
        if(context != null){
            connectivityManager = (ConnectivityManager) context
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
            wifiNetworkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
            if(wifiNetworkInfo != null){
                return wifiNetworkInfo.isAvailable();
            }
        }
        return false;
    }

    /**
     * 判断是否连接到了可用的Wi-Fi
     * @param context
     * @return
     */
    public static boolean isWIFIConnected(Context context){
        if(context != null){
            if(isNetworkConnected(context)){
                return curNetworkInfo.getType()==ConnectivityManager.TYPE_WIFI;
            }
        }
        return false;
    }

    /**
     * 判断移动网络是否可用,即MOBILE网络
     * 无论有没有打开移动数据网络,只要手机里有SIM卡,返回的都是true
     * @param context
     * @return
     */
    public static boolean isMobileAvailable(Context context){
        if (context != null){
            connectivityManager = (ConnectivityManager) context
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
            mobileNetworkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
            if(mobileNetworkInfo != null){
                return mobileNetworkInfo.isAvailable();
            }
        }
        return false;
    }

    /**
     * 获取当前网络类型
     *
     * 类型分为:  -1:无网络    0:Wi-Fi    1:WAP      2:NET
     *
     * 手机上网net和wap的区别:
     * wap是老版网络协议的产物。主要针对老手机用户,net是微软的产
     * 物,是互联网,一般手机用wap,智能机用net,当然智能机也可以用
     * wap,wap稳定,net网速快。
     * 打个比方,GPRS是一辆车,net和wap就是两条路;net是高速公路,
     * wap是一般的水泥路;前者快,收费高,后者收费较少,但速度慢。
     *
     * @param context
     * @return
     */
    public static int getNetworkTyoe(Context context){
        if(context != null){
            connectivityManager = (ConnectivityManager) context
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
            curNetworkInfo = connectivityManager.getActiveNetworkInfo();
            if(curNetworkInfo != null){
                switch (curNetworkInfo.getType()){
                    case ConnectivityManager.TYPE_WIFI:
                        return WIFI_TYPE;
                    case ConnectivityManager.TYPE_MOBILE:
                        if(curNetworkInfo.getExtraInfo().toLowerCase().contains("net")){
                            return NET_TYPE;
                        }else {
                            return WAP_TYPE;
                        }
                }
            }
        }
        return NONE_TYPE;
    }

    /**
     * 获取设备SIM卡的商网络服务商
     * @param context
     * @return
     */
    public static String getOperatorNetworkType(Context context){
        if(context != null){
            telephonyManager = (TelephonyManager) context
                    .getSystemService(Context.TELEPHONY_SERVICE);
            String networkOperatorName = telephonyManager.getNetworkOperatorName();
            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 networkOperatorName+"2G";
                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 networkOperatorName+"3G";
                case TelephonyManager.NETWORK_TYPE_LTE:
                    return networkOperatorName+"4G";
            }
        }
        return "请插入SIM卡";
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值