獲取App的崩潰信息
將以下代碼放到Application的onCreate()中
private void logMessage{
//記錄崩潰信息
final Thread.UncaughtExceptionHandler defaultHandler = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable throwable) {
//獲取崩潰時(shí)的UNIX時(shí)間戳
long timeMillis = System.currentTimeMillis();
//將時(shí)間戳轉(zhuǎn)換成人類能看懂的格式氢伟,建立一個(gè)String拼接器
StringBuilder stringBuilder =new StringBuilder(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(new Date(timeMillis)));
stringBuilder.append(":\n");
//獲取錯(cuò)誤信息
stringBuilder.append(throwable.getMessage());
stringBuilder.append("\n");
//獲取堆棧信息
StringWriter sw =new StringWriter();
PrintWriter pw =new PrintWriter(sw);
throwable.printStackTrace(pw);
stringBuilder.append(sw.toString());
//這就是完整的錯(cuò)誤信息私蕾,保存到本地
String errorLog = stringBuilder.toString();
//將錯(cuò)誤信息寫入到文件中
FileUtils.setAppendFile(errorLog);
//最后處理這個(gè)崩潰,這里使用默認(rèn)的處理方式讓APP停止運(yùn)行
defaultHandler.uncaughtException(thread, throwable);
}
});
}
寫入到文件的工具類
import android.os.Environment;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
public class FileUtils {
private static final String appName = "yourAppName";
private static File file;
static {
file = new File(Environment.getExternalStorageDirectory(), appName);
if (!file.exists()) {
file.mkdirs();
}
file = new File(file, "log.txt");
}
/**
* 將文本追加寫入到文件
*/
public static void setAppendFile(String value) {
FileWriter fw;
BufferedWriter bw;
PrintWriter printWriter = null;
try {
fw = new FileWriter(file, true);
bw = new BufferedWriter(fw);
printWriter = new PrintWriter(bw);
printWriter.println(value);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (printWriter != null) {
printWriter.close();
}
}
}
}
參考鏈接,感謝這位大佬的分享http://www.reibang.com/p/644078912cfd