判断网络状态

来源:互联网 发布:stereonet软件 编辑:程序博客网 时间:2024/06/04 18:52

判断网络状态

public class NetWorkUtils {    public static final int G3 = 3;// 3G    public static final int G2 = 2;// 2G    public static final int G4 = 4;// 4G    public static final int WIFI = 5;// WIFI    public static final int NO = 0;// 表示没有网络连接    public static int GetNetworkType(Context context) {        int strNetworkType = NO;        NetworkInfo networkInfo = ((ConnectivityManager) context                .getSystemService(Context.CONNECTIVITY_SERVICE))                .getActiveNetworkInfo();        if (networkInfo != null && networkInfo.isConnected()) {            if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {                strNetworkType = WIFI;            } else if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {                String _strSubTypeName = networkInfo.getSubtypeName();                // TD-SCDMA networkType is 17                int networkType = networkInfo.getSubtype();                switch (networkType) {                    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: // api<8 : replace by                        // 11                        strNetworkType = G2;                        break;                    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: // api<9 : replace by                        // 14                    case TelephonyManager.NETWORK_TYPE_EHRPD: // api<11 : replace by                        // 12                    case TelephonyManager.NETWORK_TYPE_HSPAP: // api<13 : replace by                        // 15                        strNetworkType = G3;                        break;                    case TelephonyManager.NETWORK_TYPE_LTE: // api<11 : replace by                        // 13                        strNetworkType = G4;                        break;                    default:                        // http://baike.baidu.com/item/TD-SCDMA 中国移动 联通 电信 三种3G制式                        if (_strSubTypeName.equalsIgnoreCase("TD-SCDMA")                                || _strSubTypeName.equalsIgnoreCase("WCDMA")                                || _strSubTypeName.equalsIgnoreCase("CDMA2000")) {                            strNetworkType = G3;                        } else {                            strNetworkType = NO;                        }                        break;                }            }        }        return strNetworkType;    }}

得到网络状态

//         获得网络状态的值        int type = NetWorkUtils.GetNetworkType(this);        if (type == NetWorkUtils.WIFI) {            Toast.makeText(this, "您当前使用的是WIFI数据连接.....", Toast.LENGTH_SHORT).show();        }        if (type == NetWorkUtils.G2 || type == NetWorkUtils.G3                || type == NetWorkUtils.G4) {            Toast.makeText(this, "您当前使用的是移动数据连接.....", Toast.LENGTH_SHORT).show();        }        if (type == NetWorkUtils.NO) {            Toast.makeText(this, "网络未连接,请检查网络状态......", Toast.LENGTH_SHORT).show();            }        }

自定义View测量高度(其他)

@Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        int height=MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2, MeasureSpec.AT_MOST);        super.onMeasure(widthMeasureSpec, height);    }
0 0
原创粉丝点击