package com.yzy.supercleanmaster.base; import android.content.Context; import java.lang.Thread.UncaughtExceptionHandler; public class MyCrashHandler implements UncaughtExceptionHandler { // 保证MyCrashHandler只有一个实例 // 2.提供一个静态的程序变量 private static MyCrashHandler myCrashHandler; private Context context; // 1.私有化构造方法 private MyCrashHandler() { } // 3.暴露出来一个静态的方法 获取myCrashHandler public static synchronized MyCrashHandler getInstance() { if (myCrashHandler == null) { myCrashHandler = new MyCrashHandler(); } return myCrashHandler; } public void init(Context context) { this.context = context; } // 程序发生异常的时候调用的方法 // try catch public void uncaughtException(Thread thread, Throwable ex) { // System.out.println("出现错误啦 哈哈"); ex.printStackTrace(); // StringBuilder sb = new StringBuilder(); // // 1.获取当前应用程序的版本号. // PackageManager pm = context.getPackageManager(); // try { // PackageInfo packinfo = pm.getPackageInfo(context.getPackageName(), // 0); // sb.append("程序的版本号为" + packinfo.versionName); // sb.append("\n"); // // // 2.获取手机的硬件信息. // Field[] fields = Build.class.getDeclaredFields(); // for (int i = 0; i < fields.length; i++) { // // 暴力反射,获取私有的字段信息 // fields[i].setAccessible(true); // String name = fields[i].getName(); // sb.append(name + " = "); // String value = fields[i].get(null).toString(); // sb.append(value); // sb.append("\n"); // } // // 3.获取程序错误的堆栈信息 . // StringWriter writer = new StringWriter(); // PrintWriter printWriter = new PrintWriter(writer); // ex.printStackTrace(printWriter); // // String result = writer.toString(); // sb.append(result); // String time = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date()); // String name ="xizi"+time+".txt"; // String fileName=Environment.getExternalStorageDirectory()+File.separator+"xz_app"+File.separator+"log"; // // File file1 =new File(fileName); // if(!file1.exists()){ // file1.mkdir(); // } // File file=new File(fileName,name); // if(!file.exists()){ // file.createNewFile(); // } // // File file = new File(Environment.getExternalStorageDirectory(),"error.log"); // FileOutputStream fos = new FileOutputStream(file); // fos.write(sb.toString().getBytes()); // fos.close(); // // // // 4.把错误信息 提交到服务器 // // } catch (Exception e) { // e.printStackTrace(); // } // 完成自杀的操作 android.os.Process.killProcess(android.os.Process.myPid()); } }