Android工具类整合

Posted 刘德利_Android

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android工具类整合相关的知识,希望对你有一定的参考价值。

android-JSONUtil工具类
常用的Json工具类,包含Json转换成实体、实体转json字符串、list集合转换成json、数组转换成json

public class JSONUtil 

    private static final String TAG = JSONUtil.class.getSimpleName();

    private JSONUtil()

    private static Gson gson = new Gson();

    /**
     * 传入一个头部,获取头部管控中的所有String信息
     * @return
     */
    public static String getHeadContext(String jsonData, String head) 
        String jsonObjectString = null;
        try 
            JSONObject jsonObject = new JSONObject(jsonData);
            jsonObjectString = jsonObject.get(head).toString();
            // LogUtil.d(TAG, "getHeadContext 只去头部header的数据信息:" + jsonObjectString);
         catch (Exception e) 
            e.printStackTrace();
        
        return jsonObjectString;
    

    /**
     * 将一个对象转换成一个Json字符串
     * @param t
     * @return
     */
    public static <T> String objectToJson(T t)
        if (t instanceof String) 
            return t.toString();
         else 
            return gson.toJson(t);
        
    

    /**
     * 将Json字符串转换成对应对象
     * @param jsonString    Json字符串
     * @param clazz        对应字节码文件.class
     * @return
     */
    @SuppressWarnings("unchecked")
    public static<T> T jsonToObject(String jsonString, Class<T> clazz)
        if (clazz == String.class) 
            return (T) jsonString;
         else 
            return (T)gson.fromJson(jsonString, clazz);
        
    

    /**
     * 将List集合转换为json字符串
     * @param list    List集合
     * @return
     */
    public static<T> String listToJson(List<T> list)
        JSONArray jsonArray = new JSONArray();
        JSONObject jsonObject = null;
        try 
            for (int i = 0; i < list.size(); i++) 
                jsonObject = new JSONObject(objectToJson(list.get(i)));
                jsonArray.put(jsonObject);
            
         catch (JSONException e) 
            e.printStackTrace();
         finally 
            if (jsonObject != null) 
                jsonObject = null;
            
        
        return jsonArray.toString();
    

    /**
     * 将数组转换成json字符串
     * @param array        数组
     * @return
     */
    public static<T> String arrayToJson(T[] array)
        JSONArray jsonArray = new JSONArray();
        JSONObject jsonObject = null;
        try 
            for (int i = 0; i < array.length; i++) 
                jsonObject = new JSONObject(objectToJson(array[i]));
                jsonArray.put(jsonObject);
            
         catch (JSONException e) 
            e.printStackTrace();
         finally 
            if (jsonObject != null) 
                jsonObject = null;
            
        
        return jsonArray.toString();
    

    /**
     * 获取json字符串中的值
     * @param json    json字符串
     * @param key    键值
     * @param clazz    所取数据类型,例如:Integer.class,String.class,Double.class,JSONObject.class
     * @return  存在则返回正确值,不存在返回null
     */
    public static<T> T getJsonObjectValue(String json, String key, Class<T> clazz)
        try 
            return getJsonObjectValue(new JSONObject(json), key, clazz);
         catch (JSONException e) 
            e.printStackTrace();
        
        return null;
    

    /**
     * 获取jsonObject对象中的值
     * @param jsonObject    jsonObject对象
     * @param key    键值
     * @param clazz    所取数据类型,例如:Integer.class,String.class,Double.class,JSONObject.class
     * @return  存在则返回正确值,不存在返回null
     */
    @SuppressWarnings("unchecked")
    public static<T> T getJsonObjectValue(JSONObject jsonObject, String key, Class<T> clazz)
        T t = null;
        try 
            if (clazz == Integer.class) 
                t = (T) Integer.valueOf(jsonObject.getInt(key));
            else if(clazz == Boolean.class)
                t = (T) Boolean.valueOf(jsonObject.getBoolean(key));
            else if(clazz == String.class)
                t = (T) String.valueOf(jsonObject.getString(key));
            else if(clazz == Double.class)
                t = (T) Double.valueOf(jsonObject.getDouble(key));
            else if(clazz == JSONObject.class)
                t = (T) jsonObject.getJSONObject(key);
            else if(clazz == JSONArray.class)
                t = (T) jsonObject.getJSONArray(key);
            else if(clazz == Long.class)
                t = (T) Long.valueOf(jsonObject.getLong(key));
            
         catch (JSONException e) 
            e.printStackTrace();
        
        return t;
    

    /**
     * json字符串转换为ContentValues
     * @param json    json字符串
     * @return
     */
    @SuppressWarnings("rawtypes")
    public static ContentValues jsonToContentValues(String json)
        ContentValues contentValues = new ContentValues();
        try 
            JSONObject jsonObject = new JSONObject(json);
            Iterator iterator = jsonObject.keys();
            String key;
            Object value;
            while (iterator.hasNext()) 
                key = iterator.next().toString();
                value = jsonObject.get(key);
                String valueString = value.toString();
                if (value instanceof String) 
                    contentValues.put(key, valueString);
                else if(value instanceof Integer)
                    contentValues.put(key, Integer.valueOf(valueString));
                else if(value instanceof Long)
                    contentValues.put(key, Long.valueOf(valueString));
                else if(value instanceof Double)
                    contentValues.put(key, Double.valueOf(valueString));
                else if(value instanceof Float)
                    contentValues.put(key, Float.valueOf(valueString));
                else if(value instanceof Boolean)
                    contentValues.put(key, Boolean.valueOf(valueString));
                
            
         catch (JSONException e) 
            e.printStackTrace();
            throw new Error("Json字符串不合法:" + json);
        

        return contentValues;
    

Android-LogUtil工具类
Log日志级别打印相关工具类

public class LogUtil 

    private LogUtil()

    /**
     * 打印的信息日志信息
     */
    private final static String INFO = "☻☻☻☻☻☻☻☻☻☻☻☻☻☻☻☻☻☻☻☻☻☻☻☻☻☻: ";

    /**
     * 打印的错误日志信息
     */
    private final static String ERROR = "✖✖✖✖✖✖✖✖✖✖✖✖✖✖✖✖✖✖✖✖✖✖✖✖✖✖: ";

    /**
     * 打印的调试日志信息
     */
    private final static String DEBUG = "☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠: ";

    /**
     * 打印的全面日志信息
     */
    private final static String VERBOSE = "▂▂▂▃▃▄▄▅▅▆▆▆▇▇: ";

    /**
     * 打印的警告日志信息
     */
    private final static String WARN = "!!!!!!!!!!!!!!!!!!!!!!!!!!: ";

    /**
     * 打印information日志
     * @param tag 标签
     * @param msg 日志信息
     */
    public static void i(String tag,String msg)
        Log.i(tag, INFO + msg);
    

    /**
     * 打印information日志
     * @param tag    标签
     * @param msg    日志信息
     * @param throwable    异常
     */
    public static void i(String tag, String msg, Throwable throwable)
        Log.i(tag, INFO + msg, throwable);
    

    /**
     * 打印verbose日志
     * @param tag    标签
     * @param msg    日志信息
     */
    public static void v(String tag, String msg)
        Log.v(tag, VERBOSE + msg);
    

    /**
     * 打印verbose日志
     * @param tag    标签
     * @param msg    日志信息
     * @param throwable    异常
     */
    public static void v(String tag, String msg, Throwable throwable)
        Log.v(tag, VERBOSE + msg, throwable);
    

    /**
     * 打印debug信息
     * @param tag    标签信息
     * @param msg    日志信息
     */
    public static void d(String tag, String msg)
        Log.d(tag, DEBUG + msg);
    

    /**
     * 打印debug日志
     * @param tag    标签信息
     * @param msg    日志信息
     * @param throwable    异常
     */
    public static void d(String tag, String msg, Throwable throwable)
        Log.d(tag, DEBUG + msg, throwable);
    

    /**
     * 打印warn日志
     * @param tag    标签信息
     * @param msg    日志信息
     */
    public static void w(String tag, String msg)
        Log.w(tag, WARN + msg);
    

    /**
     * 打印warn日志
     * @param tag    标签信息
     * @param msg    日志信息
     * @param throwable    异常
     */
    public static void w(String tag, String msg, Throwable throwable)
        Log.w(tag, WARN + msg, throwable);
    

    /**
     * 打印error日志
     * @param tag
     * @param msg    标签
     */
    public static void e(String tag, String msg)
        Log.e(tag, ERROR + msg);
    

    /**
     * 打印error日志
     * @param tag    标签
     * @param msg    日志信息
     * @param throwable    异常
     */
    public static void e(String tag, String msg, Throwable throwable)
        Log.e(tag, ERROR + msg, throwable);
    

    /**
     * 吐司提示
     * @param msg
     */
    public static void toast(Context mContext, String msg) 
        Toast.makeText(mContext, msg, Toast.LENGTH_SHORT).show();
    

    /**
     * 吐司提示 long类型
     * @param msg
     */
    public static void toastL(Context mContext, String msg) 
        Toast.makeText(mContext, msg, Toast.LENGTH_SHORT).show();
    

    /**
     * 吐司提示 自定义时间类型
     * @param msg
     */
    public static void toastD(Context mContext, String msg, int duration) 
        Toast.makeText(mContext, msg, duration).show();
    

Android-MD5Util工具类
MD5 字符串加密 ,文件加密相关工具类

public class MD5Util 

    private static final String TAG = "MD5Util";

    /**
     * 默认的密码字符串组合,用来将字节转换成 16 进制表示的字符,apache校验下载的文件的正确性用的就是默认的这个组合
     */
    protected static char hexDigits[] =  '0', '1', '2', '3', '4', '5', '6',
            '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' ;

    protected static MessageDigest messagedigest = null;

    static 
        try 
            messagedigest = MessageDigest.getInstance("MD5");
         catch (NoSuchAlgorithmException nsaex) 
            ELog.e(TAG, MD5Util.class.getName()
                    + "init failed ,MessageDigest un support MD5Util。");
            nsaex.printStackTrace();
        
    

    /**
     * 生成字符串的md5校验值
     * @param s
     * @return
     */
    public static String getMD5String(String s) 
        return getMD5String(s.getBytes());
    

    /**
     * 生成字符串的md5校验值 16位
     * @param s
     * @return
     */
    public static String getMD5String16(String s) 
        return getMD5String(s.getBytes()).substring(8, 24);
    

    /**
     * 判断字符串的md5校验码是否与一个已知的md5码相匹配
     * @param password 要校验的字符串
     * @param md5PwdStr 已知的md5校验码
     * @return
     */
    public static boolean checkPassword(String password, String md5PwdStr) 
        String s = getMD5String(password);
        return s.equals(md5PwdStr);
    

    /**
     * 生成文件的md5校验值
     * @param file
     * @return
     * @throws IOException
     */
    public static String getFileMD5String(File file) throws IOException 
        InputStream fis;
        fis = new FileInputStream(file);
        byte[] buffer = new byte[1024];
        int numRead = 0;
        while ((numRead = fis.read(buffer)) > 0) 
            messagedigest.update(buffer, 0, numRead);
        
        fis.close();
        return bufferToHex(messagedigest.digest());
    

    public static String getMD5String(byte[] bytes) 
        messagedigest.update(bytes);
        return bufferToHex(messagedigest.digest());
    

    private static String bufferToHex(byte bytes[]) 
        return bufferToHex(bytes, 0, bytes.length);
    

    private static String bufferToHex(byte bytes[], int m, int n) 
        StringBuffer stringbuffer = new StringBuffer(2 * n);
        int k = m + n;
        for (int l = m; l < k; l++) 
            appendHexPair(bytes[l], stringbuffer);
        
        return stringbuffer.toString();
    

    private static void appendHexPair(byte bt, StringBuffer stringbuffer) 
        char c0 = hexDigits[(bt & 0xf0) >> 4];    // 取字节中高 4 位的数字转换, >>> 为逻辑右移,将符号位一起右移,此处未发现两种符号有何不同 
        char c1 = hexDigits[bt & 0xf];    // 取字节中低 4 位的数字转换 
        stringbuffer.append(c0);
        stringbuffer.append(c1);
    

    /**
     * 自测方法
     * @param args
     */
    public static void main(String[] args) 
        System.out.println(getMD5String("test"));
    

Android-MeasureUtil工具类
常用测量相关的工具类:

public class MeasureUtil 

    private MeasureUtil()

    /**
     * 获取控件的测量高度
     * @param view    控件
     * @return    返回测量高度(MeasuredHeight)
     */
    public static int getMeasuredHeight(View view) 
        if (view == null) 
            throw new IllegalArgumentException("view is null");
        
        view.measure(0, 0);
        return view.getMeasuredHeight();
    

    /**
     * 控件的高度
     * @param view    控件View
     * @return    返回控件的高度
     */
    public static int getHeight(View view)
        if(view == null)
            throw new IllegalArgumentException("view is null");
        

        view.measure(0, 0);
        return view.getHeight();
    

    /**
     * 获取控件的测量宽度
     * @param view    控件
     * @return    返回控件的测量宽度
     */
    public static int getMeasuredWidth(View view)
        if(view == null)
            throw new IllegalArgumentException("view is null");
        

        view.measure(0, 0);
        return view.getMeasuredWidth();
    

    /**
     * 获取控件的宽度
     * @param view    控件
     * @return    返回控件的宽度
     */
    public static int getWidth(View view)
        if(view == null)
            throw new IllegalArgumentException("view is null");
        

        view.measure(0, 0);
        return view.getWidth();
    

    /**
     * 设置高度
     * @param view    控件
     * @param height    高度
     */
    public static void setHeight(View view, int height) 
        if (view == null || view.getLayoutParams() == null) 
            throw new IllegalArgumentException("View LayoutParams is null");
        
        ViewGroup.LayoutParams params = view.getLayoutParams();
        params.height = height;
        view.setLayoutParams(params);
    

    /**
     * 设置View的宽度
     * @param view    view
     * @param width    宽度
     */
    public static void setWidth(View view, int width)
        if(view == null || view.getLayoutParams() == null)
            throw new IllegalArgumentException("View LayoutParams is null");
        

        ViewGroup.LayoutParams params = view.getLayoutParams();
        params.width = width;
        view.setLayoutParams(params);
    

    /**
     * 设置ListView的实际高度
     * @param listView    ListView控件
     */
    public static void setListHeight(ListView listView) 
        if (listView == null) 
            throw new IllegalArgumentException("ListView is null");
        
        Adapter adapter = listView.getAdapter();
        if (adapter == null) 
            return;
        
        int totalHeight = 0;
        int size = adapter.getCount();
        for (int i = 0; i < size; i++) 
            View listItem = adapter.getView(i, null, listView);
            listItem.measure(0, 0);
            totalHeight += listItem.getMeasuredHeight();
        
        ViewGroup.LayoutParams params = listView.getLayoutParams();
        params.height = totalHeight + (listView.getDividerHeight() * (size - 1));
        LogUtil.d("MeasureUtil", "listview-height--" + params.height);
        listView.setLayoutParams(params);
    

    /**
     * 设置GridView的高度,
     * @param context    应用程序上下文
     * @param gv        GridView控件
     * @param n            行数
     * @param m            列数
     */
    public static void setGridViewHeight(Context context, GridView gv, int n, int m) 
        if(gv == null)
            throw new IllegalArgumentException("GridView is null");
        
        Adapter adapter = gv.getAdapter();
        if (adapter == null) 
            return;
        
        int totalHeight = 0;
        int size = adapter.getCount();
        for (int i = 0; i < size; i++) 
            View listItem = adapter.getView(i, null, gv);
            listItem.measure(0, 0);
            totalHeight += listItem.getMeasuredHeight() + ScreenUtil.dp2px(context, m);
        
        ViewGroup.LayoutParams params = gv.getLayoutParams();
        params.height = totalHeight + gv.getPaddingTop() + gv.getPaddingBottom() + 2;
        LogUtil.d("MeasureUtil", "gridview-height--" + params.height);
        gv.setLayoutParams(params);
    


Android-NetworkUtils工具类
网络类型,网络状态,网络制式,等相关工具类

public final class NetworkUtils 
    private NetworkUtils() 
        throw new AssertionError();
    

    /**
     * 未找到合适匹配网络类型
     */
    public static final int TYPE_NO = 0;

    /**
     * 中国移动CMNET网络
     * 中国移动GPRS接入方式之一, 主要为PC、笔记本电脑、PDA设立
     */
    public static final int TYPE_MOBILE_CMNET = 1;

    /**
     * 中国移动CMWAP网络
     * 中国移动GPRS接入方式之一,主要为手机WAP上网而设立
     */
    public static final int TYPE_MOBILE_CMWAP = 2;

    /**
     * 中国联通UNIWAP网络
     * 中国联通划分GPRS接入方式之一, 主要为手机WAP上网而设立
     */
    public static final int TYPE_MOBILE_UNIWAP = 3;

    /**
     * 中国联通UNINET网络
     * 中国联通划分GPRS接入方式之一, 主要为PC、笔记本电脑、PDA设立
     */
    public static final int TYPE_MOBILE_UNINET = 6;

    /**
     * 中国联通3GWAP网络
     */
    public static final int TYPE_MOBILE_3GWAP = 4;

    // 中国联通3HNET网络
    public static final int TYPE_MOBLIE_3GNET = 5;

    /**
     * 中国电信CTWAP网络
     */
    public static final int TYPE_MOBILE_CTWAP = 7;

    /**
     * 中国电信CTNET网络
     */
    public static final int TYPE_MOBILE_CTNET = 8;

    /**
     * WIFI网络
     */
    public static final int TYPE_WIFI = 10;

    /**
     * 网络类型 - 无连接
     */
    public static final int NETWORK_TYPE_NO_CONNECTION = -100000;

    /**
     * 连接模式WIFI网
     */
    public static final String NETWORK_TYPE_WIFI = "WIFI";
    /**
     * 连接模式快速网
     */
    public static final String NETWORK_TYPE_FAST = "FAST";
    /**
     * 连接模式慢速网
     */
    public static final String NETWORK_TYPE_SLOW = "SLOW";
    /**
     * 连接模式wap网
     */
    public static final String NETWORK_TYPE_WAP = "WAP";
    /**
     * 连接模式unknow
     */
    public static final String NETWORK_TYPE_UNKNOWN = "UNKNOWN";
    /**
     * 无连接
     */
    public static final String NETWORK_TYPE_DISCONNECT = "DISCONNECT";

    /**
     * 获取当前手机连接的网络类型
     *
     * @param context 上下文
     * @return int 网络类型
     */
    public static int getNetworkState(Context context) 
        int returnValue = TYPE_NO;
        // 获取ConnectivityManager对象
        ConnectivityManager cm =
                (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        // 获得当前网络信息
        NetworkInfo networkInfo = cm.getActiveNetworkInfo();
        if (networkInfo != null && networkInfo.isAvailable()) 
            // 获取网络类型
            int currentNetWork = networkInfo.getType();
            // 手机网络类型
            if (currentNetWork == ConnectivityManager.TYPE_MOBILE) 
                if (networkInfo.getExtraInfo() != null) 
                    if (networkInfo.getExtraInfo().equals("cmnet")) 
                        returnValue = TYPE_MOBILE_CMNET;
                    
                    if (networkInfo.getExtraInfo().equals("cmwap")) 
                        returnValue = TYPE_MOBILE_CMWAP;
                    
                    if (networkInfo.getExtraInfo().equals("uniwap")) 
                        returnValue = TYPE_MOBILE_UNIWAP;
                    
                    if (networkInfo.getExtraInfo().equals("3gwap")) 
                        returnValue = TYPE_MOBILE_3GWAP;
                    
                    if (networkInfo.getExtraInfo().equals("3gnet")) 
                        returnValue = TYPE_MOBLIE_3GNET;
                    
                    if (networkInfo.getExtraInfo().equals("uninet")) 
                        returnValue = TYPE_MOBILE_UNINET;
                    
                    if (networkInfo.getExtraInfo().equals("ctwap")) 
                        returnValue = TYPE_MOBILE_CTWAP;
                    
                    if (networkInfo.getExtraInfo().equals("ctnet")) 
                        returnValue = TYPE_MOBILE_CTNET;
                    
                
                // WIFI网络类型
             else if (currentNetWork == ConnectivityManager.TYPE_WIFI) 
                returnValue = TYPE_WIFI;
            
        
        return returnValue;
    

    /**
     * 判断网络是否连接
     *
     * @param context 上下文
     * @return boolean 网络连接状态
     */
    public static boolean isNetworkConnected(Context context) 
        if (context != null) 
            ConnectivityManager cm =
                    (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo info = cm.getActiveNetworkInfo();
            // 获取连接对象
            if (null != info && info.isConnected()) 
                return info.getState() == State.CONNECTED;
            
        
        return false;
    


    /**
     * 打开网络设置界面
     *
     * @param activity Activity
     */
    public static void openNetSetting(Activity activity) 
        Intent intent = new Intent("/");
        ComponentName cm =
                new ComponentName("com.android.settings", "com.android.settings.WirelessSettings");
        intent.setComponent(cm);
        intent.setAction("android.intent.action.VIEW");
        activity.startActivityForResult(intent, 0);
    

    /**
     * 是否是用手机网络连接
     *
     * @param context 上下文
     * @return 结果
     */
    public static boolean isFlowConnect(Context context) 
        ConnectivityManager cm =
                (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        if (null == cm || null == cm.getActiveNetworkInfo()) 
            return false;
        
        return cm.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI;
    

    /**
     * 是否是wifi连接
     *
     * @param context app的context
     * @return true:是wifi连接
     */
    public static boolean isWifiConnect(Context context) 
        ConnectivityManager cm =
                (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        if (null == cm || null == cm.getActiveNetworkInfo()) 
            return false;
        
        return cm.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI;
    

    /**
     * 获取网络连接类型
     *
     * @param context context
     * @return NetworkType
     */
    public static int getNetworkType(Context context) 
        ConnectivityManager cm =
                (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        if (null == cm || null == cm.getActiveNetworkInfo()) 
            return TYPE_NO;
        
        return cm.getActiveNetworkInfo().getType();
    


    /**
     * 获取网络连接类型名称
     *
     * @param context context
     * @return NetworkTypeName
     */
    public static String getNetworkTypeName(Context context) 
        ConnectivityManager cm =
                (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo info = cm.getActiveNetworkInfo();
        String type = NETWORK_TYPE_DISCONNECT;
        if (cm == null || info == null) 
            return type;
        
        if (info.isConnected()) 
            String typeName = info.getTypeName();
            if ("WIFI".equalsIgnoreCase(typeName)) 
                type = NETWORK_TYPE_WIFI;
             else if ("MOBILE".equalsIgnoreCase(typeName)) 
                String proxyHost = android.net.Proxy.getDefaultHost();
                if (StringUtil.isEmpty(proxyHost)) 
                    type = isFastMobileNetwork(context) ? NETWORK_TYPE_FAST : NETWORK_TYPE_SLOW;
                 else 
                    type = NETWORK_TYPE_WAP;
                
             else 
                type = NETWORK_TYPE_UNKNOWN;
            
        
        return type;
    


    /**
     * Whether is fast mobile network
     *
     * @param context context
     * @return FastMobileNetwork
     */
    private static boolean isFastMobileNetwork(Context context) 
        TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(
                Context.TELEPHONY_SERVICE);
        if (telephonyManager == null) 
            return false;
        

        switch (telephonyManager.getNetworkType()) 
            case TelephonyManager.NETWORK_TYPE_EVDO_0:
            case TelephonyManager.NETWORK_TYPE_EVDO_A:
            case TelephonyManager.NETWORK_TYPE_HSDPA:
            case TelephonyManager.NETWORK_TYPE_HSPA:
            case TelephonyManager.NETWORK_TYPE_HSUPA:
            case TelephonyManager.NETWORK_TYPE_UMTS:
            case TelephonyManager.NETWORK_TYPE_EHRPD:
            case TelephonyManager.NETWORK_TYPE_EVDO_B:
            case TelephonyManager.NETWORK_TYPE_HSPAP:
            case TelephonyManager.NETWORK_TYPE_LTE:
                return true;
            default:
                return false;
        
    


    /**
     * 获取当前网络的状态
     *
     * @param context 上下文
     * @return 当前网络的状态。具体类型可参照NetworkInfo.State.CONNECTED、NetworkInfo.State.CONNECTED.DISCONNECTED等字段。
     * 当前没有网络连接时返回null
     */
    public static State getCurrentNetworkState(Context context) 
        NetworkInfo info = ((ConnectivityManager) context.getSystemService(
                Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
        if (null == info) 
            return null;
        
        return info.getState();
    


    /**
     * 获取当前网络的类型
     *
     * @param context 上下文
     * @return 当前网络的类型。具体类型可参照ConnectivityManager中的TYPE_BLUETOOTH、TYPE_MOBILE、TYPE_WIFI等字段。
     * 当前没有网络连接时返回NetworkUtils.NETWORK_TYPE_NO_CONNECTION
     */
    public static int getCurrentNetworkType(Context context) 
        NetworkInfo info = ((ConnectivityManager) context.getSystemService(
                Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
        return info != null ? info.getType() : NETWORK_TYPE_NO_CONNECTION;
    


    /**
     * 获取当前网络的具体类型
     *
     * @param context 上下文
     * @return 当前网络的具体类型。具体类型可参照TelephonyManager中的NETWORK_TYPE_1xRTT、NETWORK_TYPE_CDMA等字段。
     * 当前没有网络连接时返回NetworkUtils.NETWORK_TYPE_NO_CONNECTION
     */
    public static int getCurrentNetworkSubtype(Context context) 
        NetworkInfo info = ((ConnectivityManager) context.getSystemService(
                Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
        return info != null ? info.getSubtype() : NETWORK_TYPE_NO_CONNECTION;
    


    /**
     * 判断当前网络是否已经连接
     *
     * @param context 上下文
     * @return 当前网络是否已经连接。false:尚未连接
     */
    public static boolean isConnectedByState(Context context) 
        return getCurrentNetworkState(context) == State.CONNECTED;
    


    /**
     * 判断当前网络是否正在连接
     *
     * @param context 上下文
     * @return 当前网络是否正在连接
     */
    public static boolean isConnectingByState(Context context) 
        return getCurrentNetworkState(context) == State.CONNECTING;
    


    /**
     * 判断当前网络是否已经断开
     *
     * @param context 上下文
     * @return 当前网络是否已经断开
     */
    public static boolean isDisconnectedByState(Context context) 
        return getCurrentNetworkState(context) == State.DISCONNECTED;
    


    /**
     * 判断当前网络是否正在断开
     *
     * @param context 上下文
     * @return 当前网络是否正在断开
     */
    public static boolean isDisconnectingByState(Context context) 
        return getCurrentNetworkState(context) == State.DISCONNECTING;
    


    /**
     * 判断当前网络是否已经暂停
     *
     * @param context 上下文
     * @return 当前网络是否已经暂停
     */
    public static boolean isSuspendedByState(Context context) 
        return getCurrentNetworkState(context) == State.SUSPENDED;
    


    /**
     * 判断当前网络是否处于未知状态中
     *
     * @param context 上下文
     * @return 当前网络是否处于未知状态中
     */
    public static boolean isUnknownByState(Context context) 
        return getCurrentNetworkState(context) == State.UNKNOWN;
    


    /**
     * 判断当前网络的类型是否是蓝牙
     *
     * @param context 上下文
     * @return 当前网络的类型是否是蓝牙。false:当前没有网络连接或者网络类型不是蓝牙
     */
    @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
    public static boolean isBluetoothByType(Context context) 
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR2) 
            return false;
         else 
            return getCurrentNetworkType(context) == ConnectivityManager.TYPE_BLUETOOTH;
        
    


    /**
     * 判断当前网络的类型是否是虚拟网络
     *
     * @param context 上下文
     * @return 当前网络的类型是否是虚拟网络。false:当前没有网络连接或者网络类型不是虚拟网络
     */
    @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
    public static boolean isDummyByType(Context context) 
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR2) 
            return false;
         else 
 

以上是关于Android工具类整合的主要内容,如果未能解决你的问题,请参考以下文章

spring整合mybatis多数据源下部分配置(下划线转驼峰)失效问题

Android FrameWork相关知识点面试题整合!

使用 SpringBoot 整合 MyBatis 开发 开启驼峰映射功能

Java字符串转为驼峰格式构建工具类

map转Bean对象实用工具类(驼峰处理,时间格式等其他类型处理)

Java最全的字符串工具类,例如是否空,去空,截取字符串,下划线转驼峰命名,是否包含字符串