package org.qii.weiciyuan.support.crashmanager; import org.qii.weiciyuan.support.file.FileManager; import android.text.TextUtils; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.PrintWriter; import java.io.StringWriter; import java.io.Writer; import java.util.Date; import java.util.UUID; /** * User: qii * Date: 13-3-21 */ public class ExceptionHandler implements Thread.UncaughtExceptionHandler { private Thread.UncaughtExceptionHandler previousHandler; public ExceptionHandler(Thread.UncaughtExceptionHandler handler) { this.previousHandler = handler; } public void uncaughtException(Thread thread, Throwable exception) { final Date now = new Date(); final Writer result = new StringWriter(); final PrintWriter printWriter = new PrintWriter(result); exception.printStackTrace(printWriter); try { String logDir = FileManager.getLogDir(); if (TextUtils.isEmpty(logDir)) { return; } String filename = UUID.randomUUID().toString(); String path = logDir + File.separator + filename + ".stacktrace"; BufferedWriter write = new BufferedWriter(new FileWriter(path)); write.write("Package: " + CrashManagerConstants.APP_PACKAGE + "\n"); write.write("Version: " + CrashManagerConstants.APP_VERSION + "\n"); write.write("Android: " + CrashManagerConstants.ANDROID_VERSION + "\n"); write.write("Manufacturer: " + CrashManagerConstants.PHONE_MANUFACTURER + "\n"); write.write("Model: " + CrashManagerConstants.PHONE_MODEL + "\n"); write.write("Date: " + now + "\n"); write.write("\n"); write.write(result.toString()); write.flush(); write.close(); } catch (Exception another) { } finally { previousHandler.uncaughtException(thread, exception); } } }