Android 常见工具类封装
1,MD5工具类:
public class MD5Util {public final static String MD5(String s) {char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9','a', 'b', 'c', 'd', 'e', 'f' };try {byte[] btInput = s.getBytes();// 获得MD5摘要算法的 MessageDigest 对象MessageDigest mdInst = MessageDigest.getInstance("MD5");// 使用指定的字节更新摘要 mdInst.update(btInput);// 获得密文byte[] md = mdInst.digest();// 把密文转换成十六进制的字符串形式int j = md.length;char str[] = new char[j * 2];int k = 0;for (int i = 0; i < j; i++) {byte byte0 = md[i];str[k++] = hexDigits[byte0 >>> 4 & 0xf];str[k++] = hexDigits[byte0 & 0xf];}return new String(str);} catch (Exception e) {return null;}}public static void main(String[] args) {System.out.print(MD5Util.MD5("password"));} }
2,线程睡眠
public class CSleep {public static final long DEFAULT_SLEEP_TIME = 500;private boolean isRuning = false;public boolean isRuning() {return isRuning;}public void runWithTime(final long defaultSleepTime) {isRuning = true;new Thread() {@Overridepublic void run() {try {sleep(defaultSleepTime, 0);} catch (InterruptedException e) {e.printStackTrace();}isRuning = false;super.run();}}.start();} }
3,检查网络是否连通
/*** 检查网络是否连通* * @return boolean* @since V1.0*/public boolean isNetworkAvailable(Context context) {// 创建并初始化连接对象ConnectivityManager connMan = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);// 判断初始化是否成功并作出相应处理if (connMan != null) {// 调用getActiveNetworkInfo方法创建对象,如果不为空则表明网络连通,否则没连通NetworkInfo info = connMan.getActiveNetworkInfo();if (info != null) {return info.isAvailable();}}return false;}
4,异常类捕捉
/*** UncaughtException处理类,当程序发生Uncaught异常的时候,由该类来接管程序,并记录发送错误报告. 需要在Application中注册,为了要在程序启动器就监控整个程序。*/ public class CrashHandler implements UncaughtExceptionHandler {/** TAG */public static final String TAG = "CrashHandler";/** 系统默认的UncaughtException处理类 */private Thread.UncaughtExceptionHandler mDefaultHandler;/** CrashHandler实例 */private static CrashHandler mCrashHandler;/** 程序的Context对象 */private Context mContext;/** 用来存储设备信息和异常信息 */private Map<String, String> infos = new HashMap<String, String>();/** 用于格式化日期,作为日志文件名的一部分 */private DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");/*** 私有构造函数*/private CrashHandler() {}/*** 获取CrashHandler实例 ,单例模式* * @return* @since V1.0*/public static CrashHandler getInstance() {if (mCrashHandler == null)mCrashHandler = new CrashHandler();return mCrashHandler;}/*** 初始化* * @param context* @since V1.0*/public void init(Context context) {mContext = context;// 获取系统默认的UncaughtException处理器mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();// 设置该CrashHandler为程序的默认处理器Thread.setDefaultUncaughtExceptionHandler(this);}/*** 当UncaughtException发生时会转入该函数来处理*/@Overridepublic void uncaughtException(Thread thread, Throwable ex) {if (!handleException(ex) && mDefaultHandler != null) {// 如果用户没有处理则让系统默认的异常处理器来处理 mDefaultHandler.uncaughtException(thread, ex);} else {try {Thread.sleep(3000);} catch (InterruptedException e) {CLog.e(TAG, "uncaughtException() InterruptedException:" + e);}// 退出程序 android.os.Process.killProcess(android.os.Process.myPid());System.exit(1);}}/*** 自定义错误处理,收集错误信息 发送错误报告等操作均在此完成.* * @param ex* @return true:如果处理了该异常信息;否则返回false.* @since V1.0*/private boolean handleException(Throwable ex) {if (ex == null) {return false;}// 收集设备参数信息 collectDeviceInfo(mContext);// 使用Toast来显示异常信息new Thread() {@Overridepublic void run() {Looper.prepare();Toast.makeText(mContext, "很抱歉,程序出现异常,即将退出.", Toast.LENGTH_SHORT).show();Looper.loop();}}.start();// 保存日志文件 saveCatchInfo2File(ex);return true;}/*** 收集设备参数信息* * @param ctx* @since V1.0*/public void collectDeviceInfo(Context ctx) {try {PackageManager pm = ctx.getPackageManager();PackageInfo pi = pm.getPackageInfo(ctx.getPackageName(), PackageManager.GET_ACTIVITIES);if (pi != null) {String versionName = pi.versionName == null ? "null" : pi.versionName;String versionCode = pi.versionCode + "";infos.put("versionName", versionName);infos.put("versionCode", versionCode);}} catch (NameNotFoundException e) {CLog.e(TAG, "collectDeviceInfo() an error occured when collect package info NameNotFoundException:", e);}Field[] fields = Build.class.getDeclaredFields();for (Field field : fields) {try {field.setAccessible(true);infos.put(field.getName(), field.get(null).toString());CLog.d(TAG, field.getName() + " : " + field.get(null));} catch (Exception e) {CLog.e(TAG, "collectDeviceInfo() an error occured when collect crash info Exception:", e);}}}/*** 保存错误信息到文件中* * @param ex* @return 返回文件名称,便于将文件传送到服务器*/private String saveCatchInfo2File(Throwable ex) {StringBuffer sb = new StringBuffer();for (Map.Entry<String, String> entry : infos.entrySet()) {String key = entry.getKey();String value = entry.getValue();sb.append(key + "=" + value + "\n");}Writer writer = new StringWriter();PrintWriter printWriter = new PrintWriter(writer);ex.printStackTrace(printWriter);Throwable cause = ex.getCause();while (cause != null) {cause.printStackTrace(printWriter);cause = cause.getCause();}printWriter.close();String result = writer.toString();sb.append(result);try {long timestamp = System.currentTimeMillis();String time = formatter.format(new Date());String fileName = "crash-" + time + "-" + timestamp + ".log";if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {String path = FilePathUtil.getiVMSDirPath() + "/crash/";File dir = new File(path);if (!dir.exists()) {dir.mkdirs();}FileOutputStream fos = new FileOutputStream(path + fileName);fos.write(sb.toString().getBytes());// 发送给开发人员sendCrashLog2PM(path + fileName);fos.close();}return fileName;} catch (Exception e) {CLog.e(TAG, "saveCatchInfo2File() an error occured while writing file... Exception:", e);}return null;}/*** 将捕获的导致崩溃的错误信息发送给开发人员 目前只将log日志保存在sdcard 和输出到LogCat中,并未发送给后台。* * @param fileName* @since V1.0*/private void sendCrashLog2PM(String fileName) {if (!new File(fileName).exists()) {CLog.e(TAG, "sendCrashLog2PM() 日志文件不存在");return;}FileInputStream fis = null;BufferedReader reader = null;String s = null;try {fis = new FileInputStream(fileName);reader = new BufferedReader(new InputStreamReader(fis, "GBK"));while (true) {s = reader.readLine();if (s == null)break;// 由于目前尚未确定以何种方式发送,所以先打出log日志。 CLog.e(TAG, s);}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally { // 关闭流try {reader.close();fis.close();} catch (IOException e) {e.printStackTrace();}}} }
5,弹出框提醒
public static Dialog showDialog(Context ctx, int layViewID, int ThemeType) {Dialog res = new Dialog(ctx, ThemeType);res.setContentView(layViewID);return res;}
6,图片API类
public class ImageAPI {public static Bitmap getImageByFilePath(String filePath, int scale) {Bitmap res = null;BitmapFactory.Options options = new BitmapFactory.Options();options.inJustDecodeBounds = true;BitmapFactory.decodeFile(filePath, options);options.inJustDecodeBounds = false;options.inSampleSize = scale;options.inPreferredConfig = Bitmap.Config.ARGB_4444;return res;}public static Bitmap getImageByFilePath(String filePath, int Towidth, int ToHeight) {Bitmap res = null;BitmapFactory.Options options = new BitmapFactory.Options();options.inJustDecodeBounds = true;if (!new File(filePath).exists())return res;BitmapFactory.decodeFile(filePath, options);int origionalWidth = options.outHeight;int origionalHeight = options.outWidth;options.inJustDecodeBounds = false;int scale = Math.max(origionalWidth / Towidth, origionalHeight / ToHeight);options.inSampleSize = scale;options.inPreferredConfig = Bitmap.Config.ARGB_4444;try {res = BitmapFactory.decodeFile(filePath, options);} catch (Exception e) {e.printStackTrace();return null;} catch (OutOfMemoryError e) {e.printStackTrace();return null;}return res;}}
10,提醒封装类
public static void showToast(Context ctx, int id, String str) {if (str == null) {return;}Toast toast = Toast.makeText(ctx, ctx.getString(id) + str, Toast.LENGTH_SHORT);toast.setGravity(Gravity.CENTER, 0, 0);toast.show();}public static void showToast(Context ctx, String errInfo) {if (errInfo == null) {return;}Toast toast = Toast.makeText(ctx, errInfo, Toast.LENGTH_SHORT);toast.setGravity(Gravity.CENTER, 0, 0);toast.show();}
Android 常见工具类封装相关推荐
- Android 图片处理工具类封装2
http://www.2cto.com/kf/201312/263638.html Android 图片处理工具类封装 2013-12-10 0个评论 来源:Wiker Yong 的专栏 ...
- Android开发工具类集锦
概述 本人做android开发已有段日子了,在开发的过程中一直使用着工具类,包括别人已经封装好的工具类以及自己封装的工具类,本篇博客向大家介绍自己在开发过程中经常使用到的一些简单实用的工具类,在文章末 ...
- android sharedpreferences工具类
今天,简单讲讲如何写一个sharedpreferences的工具类. 很简单,把一些重复的操作封装在工具类里,其他地方调用就可以.在网上搜索了比较多的资料,找到一个比较好的工具类. 参考文章:http ...
- android sharedpreferences 工具类,android sharedpreferences工具类
释放双眼,带上耳机,听听看~! 今天,简单讲讲如何写一个sharedpreferences的工具类. 很简单,把一些重复的操作封装在工具类里,其他地方调用就可以.在网上搜索了比较多的资料,找到一个比较 ...
- Android开发工具类 Utils
包括了各种工具类.辅助类.管理类等 Awesome_API: https://github.com/marktony/Awesome_API/blob/master/Chinese.md 收集中国国内 ...
- Android开发工具类
包括了各种工具类.辅助类.管理类等 Awesome_API: https://github.com/marktony/Awesome_API/blob/master/Chinese.md 收集中国国内 ...
- Redis工具类封装讲解和实战
Redis工具类封装讲解和实战 简介:高效开发方式 Redis工具类封装讲解和实战 1.常用客户端 https://redisdesktop.com/download ...
- IOS开发基础之音频工具类封装AVAudioPlayer
IOS开发基础之音频工具类封装AVAudioPlayer 源码在我的主页下面 ,项目名称是AVAudioPlayer 关键性代码 工具类的封装 // // LJAudioTool.h // AVAud ...
- 【JavaScript学习】JavaScript 常用工具类封装
文章目录 1.JavaScript 常用工具类封装 (1)获得浏览器地址所有参数 (2)将json转为get参数 (3)格式校验工具类 (4)数组操作工具类 (5)表单取值工具类 (6)时间转换工具类 ...
最新文章
- BH60绝对位置编码器测试
- 【Excel】提取身份证信息
- vue学习:7、路由跳转
- Hbase PageFilter 取出数量不准确问题
- 字符串处理 —— AC 自动机
- win8超极本盘符误删找回数据的办法
- linux学习(7)第七章、Linux 文件与目录管理
- Dyn披露DDoS攻击细节:幕后是10万台的物联网设备僵尸网络
- php js代码,在php中运行js代码的方法
- cad插件制作教程_画图必备的CAD超级工具箱插件下载(含gif教程)
- 在cmd中对Python的一些操作(查版本,下载包等)
- 四轴飞行器基本组成及其飞行原理详解
- UVA489 刽子手的游戏 Hangman Judge
- Web The7安装
- 升入高中,如何规划数学竞赛
- ERROR: pip‘s dependency resolver does not currently take into account all the packages that are inst
- win10更新后 chrome内核浏览器总是打开网页一直加载 甚至打不开 解决方法
- xls打开显示无法在计算机上运行,电脑无法运行Excel提示不是有效Win32应用程序修复方法...
- 网狐卓越版本内核引擎、卓越内核(源码,源码,源码)
- 随着信息产业的飞速发展,项目管理对于应用开发为主的软件企业是一个行之有效的管理办法,在软件开发中项目...
热门文章
- 函数传参涉及到副本的创建与拷贝问题分析
- Bootstrap笔记
- scp遇到路径中有空格
- zookeeper 集群安装
- C# 生成系统唯一号
- weblogic服务器部署的程序,如何直接通过IP访问(即URL中去掉工程名)
- C++实现十大排序算法(冒泡,选择,插入,归并,快速,堆,希尔,桶,计数,基数)排序算法时间复杂度、空间复杂度、稳定性比较(面试经验总结)
- 深入理解PHP原理之变量(Variables inside PHP)
- asp.net利用RAR实现文件压缩解压缩【月儿原创】
- 用C#编写获取远程IP,MAC的方法