常用工具类集合

简介: Md5Util LogUtils NetUtils Md5Utilimport java.security.MessageDigest;import java.security.NoSuchAlgorithmException;/** * author Phyooos * date 16/4/6. */public clas
  • Md5Util
  • LogUtils
  • NetUtils

Md5Util

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * author Phyooos
 * date 16/4/6.
 */
public class Md5Utils {
    /**
     *@param flag 是否32位加密
     *@param str 传入数据
     *@author Phyooos
     *@data 16/4/6 22:56
     */
    public static String encryptByMd5(String str,boolean flag) {
        try {
            MessageDigest messageDigest = MessageDigest.getInstance("MD5");
            messageDigest.update(str.getBytes());
            byte [] result = messageDigest.digest();
            int j ;
            StringBuffer   stringBuffer = new StringBuffer("");
            for(int offest = 0 ;offest<result.length;offest++){
                j = result[offest];
                if(j<0){j+=256;}
                if(j>16){stringBuffer.append("");}
                stringBuffer.append(Integer.toString(j));
            }
            return flag?stringBuffer.toString():stringBuffer.toString().substring(8,24);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return "";
    }
}

LogUtils

import android.util.Log;

/**
 * Log统一管理类
 * 
 * author Phyooos
 * date 16/4/6.
 */
public class L{

    private L(){

        throw new UnsupportedOperationException("cannot be instantiated");
    }
    // 在application的onCreate函数里面初始化
    public static boolean isDebug = true;
    private static final String TAG = "Phyooos";

    // 四个是默认tag的函数
    public static void i(String msg){
        if (isDebug)Log.i(TAG, msg);
    }

    public static void d(String msg){
        if (isDebug)Log.d(TAG, msg);
    }

    public static void e(String msg){
        if (isDebug)Log.e(TAG, msg);
    }

    public static void v(String msg){
        if (isDebug)Log.v(TAG, msg);
    }

    // 自定义tag的函数
    public static void i(String tag, String msg){
        if (isDebug)Log.i(tag, msg);
    }

    public static void d(String tag, String msg){
        if (isDebug)Log.i(tag, msg);
    }

    public static void e(String tag, String msg){
        if (isDebug)Log.i(tag, msg);
    }

    public static void v(String tag, String msg){
        if (isDebug)Log.i(tag, msg);
    }
}

NetUtils

import android.app.Activity;
import android.app.AlertDialog;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;


/**
 * author Phyooos
 * date 16/4/6.
 */
public class NetUtils {
    private NetUtils() {
        /* cannot be instantiated */
        throw new UnsupportedOperationException("cannot be instantiated");
    }

    /**
     * 判断网络是否连接
     * 
     * @param context
     * @return true 已打开  false 未打开
     */
    public static boolean isConnected(Context context) {

        ConnectivityManager connectivity = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);

        if (null != connectivity) {

            NetworkInfo info = connectivity.getActiveNetworkInfo();
            if (null != info && info.isConnected()) {
                if (info.getState() == NetworkInfo.State.CONNECTED) {
                    return true;
                }
            }
        }
        return false;
    }

    /**
     * 判断是否是wifi连接
     */
    public static boolean isWifi(Context context) {
        ConnectivityManager cm = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);

        if (cm == null)
            return false;
        return cm.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI;

    }

    /**
     * 打开网络设置界面
     */
    public static void openSetting(final Activity activity) {
        AlertDialog.Builder builder = new AlertDialog.Builder(activity);
        builder.setTitle("网络设置").setMessage("网络连接不可用,是否设置?")
                .setPositiveButton("去设置", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Intent intent = null;
                        //判断手机系统的版本
                        if (android.os.Build.VERSION.SDK_INT > 10) {
                            intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);
                        } else {
                            intent = new Intent();
                            ComponentName component = new ComponentName("com.android.settings",
                                    "com.android.settings.WirelessSettings");
                            intent.setComponent(component);
                            intent.setAction("android.intent.action.VIEW");
                        }
                        activity.startActivity(intent);
                    }
                }).setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        }).show();
    }
}

SPUtils

package com.klgz.wskj.utils;

import android.content.Context;
import android.content.SharedPreferences;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.klgz.wskj.global.GlobalApplication;
import com.klgz.wskj.modle.UserInfoMod;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Map;

public class SPUtils {


    private static Gson gson = new Gson();
    public SPUtils()
    {
        /* cannot be instantiated */
        throw new UnsupportedOperationException("cannot be instantiated");
    }

    /**
     * 保存在手机里面的文件名
     */
    public static final String FILE_NAME = "share_data";
    private Context context = GlobalApplication.getmContext();

    /**
     * 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法
     *
     * @param context
     * @param key
     * @param object
     */
    public static void put(Context context, String key, Object object)
    {

        SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
                Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();

        if (object instanceof String)
        {
            editor.putString(key, (String) object);
        } else if (object instanceof Integer)
        {
            editor.putInt(key, (Integer) object);
        } else if (object instanceof Boolean)
        {
            editor.putBoolean(key, (Boolean) object);
        } else if (object instanceof Float)
        {
            editor.putFloat(key, (Float) object);
        } else if (object instanceof Long)
        {
            editor.putLong(key, (Long) object);
        } else
        {
            editor.putString(key, object.toString());
        }

        SharedPreferencesCompat.apply(editor);
    }

    /**
     * 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值
     *
     * @param context
     * @param key
     * @param defaultObject
     * @return
     */
    public static Object get(Context context, String key, Object defaultObject)
    {
        SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
                Context.MODE_PRIVATE);

        if (defaultObject instanceof String)
        {
            return sp.getString(key, (String) defaultObject);
        } else if (defaultObject instanceof Integer)
        {
            return sp.getInt(key, (Integer) defaultObject);
        } else if (defaultObject instanceof Boolean)
        {
            return sp.getBoolean(key, (Boolean) defaultObject);
        } else if (defaultObject instanceof Float)
        {
            return sp.getFloat(key, (Float) defaultObject);
        } else if (defaultObject instanceof Long)
        {
            return sp.getLong(key, (Long) defaultObject);
        }

        return null;
    }

    /**
     * 移除某个key值已经对应的值
     *
     * @param context
     * @param key
     */
    public static void remove(Context context, String key)
    {
        SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
                Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();
        editor.remove(key);
        SharedPreferencesCompat.apply(editor);
    }

    /**
     * 清除所有数据
     *
     * @param context
     */
    public static void clear(Context context)
    {
        SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
                Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();
        editor.clear();
        SharedPreferencesCompat.apply(editor);
    }

    /**
     * 查询某个key是否已经存在
     *
     * @param context
     * @param key
     * @return
     */
    public static boolean contains(Context context, String key)
    {
        SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
                Context.MODE_PRIVATE);
        return sp.contains(key);
    }

    /**
     * 返回所有的键值对
     *
     * @param context
     * @return
     */
    public static Map<String, ?> getAll(Context context)
    {
        SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
                Context.MODE_PRIVATE);
        return sp.getAll();
    }

    /**
     * 创建一个解决SharedPreferencesCompat.apply方法的一个兼容类
     *
     * @author zhy
     *
     */
    private static class SharedPreferencesCompat
    {
        private static final Method sApplyMethod = findApplyMethod();

        /**
         * 反射查找apply的方法
         *
         * @return
         */
        @SuppressWarnings({ "unchecked", "rawtypes" })
        private static Method findApplyMethod()
        {
            try
            {
                Class clz = SharedPreferences.Editor.class;
                return clz.getMethod("apply");
            } catch (NoSuchMethodException e)
            {
            }

            return null;
        }

        /**
         * 如果找到则使用apply执行,否则使用commit
         *
         * @param editor
         */
        public static void apply(SharedPreferences.Editor editor)
        {
            try
            {
                if (sApplyMethod != null)
                {
                    sApplyMethod.invoke(editor);
                    return;
                }
            } catch (IllegalArgumentException e)
            {
            } catch (IllegalAccessException e)
            {
            } catch (InvocationTargetException e)
            {
            }
            editor.commit();
        }
    }

    /**
     * 获取本地保存的用户信息
     * @return
     */
    public static UserInfoMod getUserInfo(Context context) {
        UserInfoMod user = null;
        String json = (String) get(context,"UserInfoMod",null);
        try {
            user = gson.fromJson(json, new TypeToken<UserInfoMod>(){}.getType());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return user;
    }


    /**
     * 设置本地保存的用户信息
     * @return
     */
    public static void setUserInfo(Context context,UserInfoMod user) {
        put(context,"UserInfoMod",gson.toJson(user));
    }

    /**
     * 删除本地保存的用户信息
     * @return
     */
    public static void removeUserInfo(Context context,String key) {
        remove(context,key);
    }

}

TextUtils

import android.text.TextUtils;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.DecimalFormat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by yoko on 6/10/15.
 */



public class StringUtils
{
  public static boolean isStringEmpty(String str)
  {
    return (str == null) || (str.length() == 0) || (str.trim().length() == 0);
  }

  public static boolean isBlank(String str)
  {
    int strLen = 0;
    if ((str == null) || ((strLen = str.length()) == 0)) {
      return true;
    }

    for (int i = 0; i < strLen; i++) {
      if (!Character.isWhitespace(str.charAt(i))) {
        return false;
      }
    }
    return true;
  }

  public static boolean equalsNull(String str)
  {
    return (isBlank(str)) || (str.equalsIgnoreCase("null"));
  }

  public static boolean isNumeric(String str)
  {
    if (str == null) {
      return false;
    }
    int sz = str.length();
    for (int i = 0; i < sz; i++) {
      if (!Character.isDigit(str.charAt(i))) {
        return false;
      }
    }
    return true;
  }

  public static String md5Helper(String plainText)
  {
    try
    {
      MessageDigest md = MessageDigest.getInstance("MD5");
      md.update(plainText.getBytes());
      byte[] b = md.digest();

      StringBuffer buf = new StringBuffer("");
      for (int offset = 0; offset < b.length; offset++)
      {
        int i = b[offset];
        if (i < 0) {
          i += 256;
        }
        if (i < 16) {
          buf.append("0");
        }
        buf.append(Integer.toHexString(i));
      }
      return buf.toString();
    } catch (NoSuchAlgorithmException e)
    {
      throw new RuntimeException(e);
    }
  }

  private static String getSubStr(String str, int subNu, String replace)
  {
    int strLength = str.length();
    if (strLength >= subNu) {
      str = str.substring(strLength - subNu, strLength);
    } else {
      for (int i = strLength; i < subNu; i++) {
        str = str + replace;
      }
    }
    return str;
  }

  public static String getUUIDString(String tBrand, String tSeries, String tUnique, int subNu,
      String replace)
  {
    return md5Helper(getSubStr(tBrand, subNu, replace) +
        getSubStr(tSeries, subNu, replace) +
        getSubStr(tUnique, subNu, replace));
  }

  public static String encodeStr(String str)
  {
    if (TextUtils.isEmpty(str)) {
      return "";
    }
    try
    {
      return URLEncoder.encode(str, "UTF-8");
    } catch (UnsupportedEncodingException e)
    {
      e.printStackTrace();
    }
    return str;
  }

  public static boolean isDigit(String strNum)
  {
    Pattern pattern = Pattern.compile("[0-9]{1,}");
    Matcher matcher = pattern.matcher(strNum);
    return matcher.matches();
  }

  public static String stringChangeCapital(String s)
  {
    if (equalsNull(s)) {
      return "";
    }
    char[] c = s.toCharArray();
    for (int i = 0; i < s.length(); i++) {
      if ((c[i] >= 'a') && (c[i] <= 'z')) {
        c[i] = Character.toUpperCase(c[i]);
      } else if ((c[i] >= 'A') && (c[i] <= 'Z')) {
        c[i] = Character.toLowerCase(c[i]);
      }
    }
    return String.valueOf(c);
  }

  public static String addComma3(String str)
  {
    if (equalsNull(str)) {
      return "";
    }
    str = new StringBuilder(str).reverse().toString();
    String str2 = "";
    for (int i = 0; i < str.length(); i++)
    {
      if (i * 3 + 3 > str.length())
      {
        str2 = str2 + str.substring(i * 3, str.length());
        break;
      }
      str2 = str2 + str.substring(i * 3, i * 3 + 3) + ",";
    }
    if (str2.endsWith(",")) {
      str2 = str2.substring(0, str2.length() - 1);
    }
    return new StringBuilder(str2).reverse().toString();
  }

  public static String handlerStr(String str, int length)
  {
    if ((str != null) && (!"".equals(str)))
    {
      if (str.length() > 15)
      {
        String s = str.substring(0, 15) + "...";
        return s;
      }
      return str;
    }
    return "";
  }

  public static String getPlayCountsToStr(long playCount)
  {
    if (playCount < 10000L)
    {
      if (playCount < 1000L) {
        return "" + playCount;
      }
      if ((playCount >= 1000L) && (playCount <= 9999L))
      {
        String aa = "" + playCount / 1000L;
        String bb = "" + playCount % 1000L;
        if (bb.length() < 3) {
          bb = "0" + bb;
        }
        return aa + "," + bb;
      }
      return "";
    }
    if ((playCount >= 10000L) && (playCount < 100000000L))
    {
      DecimalFormat df = new DecimalFormat(".#");
      String st = df.format(playCount * 1.0D / 10000.0D) + "Íò";
      return st;
    }
    DecimalFormat df = new DecimalFormat(".#");
    String st = df.format(playCount * 1.0D / 100000000.0D) + "ÒÚ";
    return st;
  }
}

FileUtils

mport java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

import com.klgz.app.config.AppConstants;

public class FileUtils {

    public static void saveBitmap(String directory,String fileName,Bitmap bitmap) {
        File directoryFile = new File(directory);
        if(!directoryFile.exists()){
            directoryFile.mkdirs();
        }
        File f = new File(directoryFile, fileName);
        if (f.exists()) {
            f.delete();
        }
        try {
            FileOutputStream out = new FileOutputStream(f);
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
            out.flush();
            out.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static Bitmap getBitmap(String fileName){
        Bitmap bitmap = BitmapFactory.decodeFile(AppConstants.ROOT_PATH+fileName);
        return bitmap;
    }
}

DeviceUtils


import android.content.Context;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.telephony.TelephonyManager;

/**
 * 设备工具类
 * 
 * @author LETV
 */
public class DeviceUtils {

  public static final String LETV_MOBILE_DEVICE_X600 = "X600";
  public static final String LETV_MOBILE_DEVICE_X601 = "X601";
  public static final String LETV_MOBILE_DEVICE_X800 = "X800";
  public static final String LETV_MOBILE_DEVICE_X900 = "X900";

  /**
   * 获取设备型号
   * 
   * @return android.os.build.MODEL
   */
  public static String getDeviceModel() {
    return android.os.Build.MODEL;
  }

  /**
   * 获取设备名称,在X600上获取到的是“X600”<br>
   * 上面getDeviceModel获取到的是“android X600”
   * 
   * @return android.os.build.DEVICE
   */
  public static String getTerminalSeries() {
    return android.os.Build.DEVICE;
  }

  /** 是否第三方设备 */
  // 由于保密原因android.os.getString("ro.product.brand") ?= letv
  // 没有设置正确的brand
  // 目前根据model中是否含有三款机型的型号来判断是否乐视手机
  // TODO:正式发布前修改逻辑。
  public static boolean isOtherDevice() {
    String model = android.os.Build.MODEL;
    if (StringUtils.equalsNull(model)) {
      return true;
    }
    if (model.contains(LETV_MOBILE_DEVICE_X600)
        || model.contains(LETV_MOBILE_DEVICE_X601)
        || model.contains(LETV_MOBILE_DEVICE_X900)) {
      return false;
    }
    return true;
  }

  /**
   * 获取设备ID,先取IMEI,获取不到取mac地址的MD5值作为设备id
   */
  public static String getDeviceId(Context context) {
    if (context == null) {
      return "";
    }
    TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(
            Context.TELEPHONY_SERVICE);
    String deviceId = telephonyManager.getDeviceId();

    if (deviceId != null && deviceId.length() > 0) {
      return deviceId;
    }

    WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    WifiInfo wifiInfo = wifiManager.getConnectionInfo();

    if (wifiInfo == null) {
      throw new RuntimeException(
          "getIEMI(Context context):wifiManager.getConnectionInfo() ==> null");
    }

    String macAddress = wifiInfo.getMacAddress();
    if (macAddress == null || "".equals(macAddress.trim())) {
      throw new RuntimeException(
          "getIEMI(Context context):wifiInfo.getMacAddress() ==> null");
    }
    return MD5Util.MD5(macAddress);
  }
}
相关文章
|
Java Windows
几步轻松实现可执行jar包在windows上直接启动
几步轻松实现可执行jar包在windows上直接启动
1347 0
|
存储 Android开发
android ViewPager + Fragment + Tablayout 实现嵌套页面导航(二)
android ViewPager + Fragment + Tablayout 实现嵌套页面导航
android ViewPager + Fragment + Tablayout 实现嵌套页面导航(二)
|
7月前
|
Android开发
Android Studio 控制台中文乱码,解决方案都在这里了,完美解决
Android Studio 控制台中文乱码,解决方案都在这里了,完美解决
|
10月前
|
Android开发
关于安卓DialogFragment使用(三)
关于安卓DialogFragment使用(三)
135 0
|
10月前
|
Python
Python递归遍历文件夹批量替换某字符串改名
Python递归遍历文件夹批量替换某字符串改名
77 0
|
Java Android开发
Android 四种常见的线程池
引入线程池的好处 1)提升性能。创建和消耗对象费时费CPU资源 2)防止内存过度消耗。控制活动线程的数量,防止并发线程过多。 我们来看一下线程池的简单的构造 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,
2072 0
|
7天前
|
NoSQL Cloud Native Redis
Redis核心开发者的新征程:阿里云与Valkey社区的技术融合与创新
阿里云瑶池数据库团队后续将持续参与Valkey社区,如过往在Redis社区一样耕耘,为开源社区作出持续贡献。
Redis核心开发者的新征程:阿里云与Valkey社区的技术融合与创新
|
7天前
|
关系型数据库 分布式数据库 数据库
PolarDB闪电助攻,《香肠派对》百亿好友关系实现毫秒级查询
PolarDB分布式版助力《香肠派对》实现百亿好友关系20万QPS的毫秒级查询。
PolarDB闪电助攻,《香肠派对》百亿好友关系实现毫秒级查询
|
8天前
|
消息中间件 Cloud Native Serverless
RocketMQ 事件驱动:云时代的事件驱动有啥不同?
本文深入探讨了云时代 EDA 的新内涵及它在云时代再次流行的主要驱动力,包括技术驱动力和商业驱动力,随后重点介绍了 RocketMQ 5.0 推出的子产品 EventBridge,并通过几个云时代事件驱动的典型案例,进一步叙述了云时代事件驱动的常见场景和最佳实践。
115079 1

热门文章

最新文章