Android 设备上保存崩溃信息的文件夹位置是 /data/data/
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { @Override public void uncaughtException(Thread thread, Throwable ex) { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); ex.printStackTrace(pw); String stackTraceString = sw.toString(); Log.e(TAG, stackTraceString);
// 把崩溃信息保存到文件中
saveCrashInfoToFile(stackTraceString);
// 退出应用程序
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
}
});
try { // your code } catch (Exception e) { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); e.printStackTrace(pw); String stackTraceString = sw.toString(); Log.e(TAG, stackTraceString);
// 把崩溃信息保存到文件中
saveCrashInfoToFile(stackTraceString);
}
private void saveCrashInfoToFile(String info) { try { File file = new File(getFilesDir(), "crash/crash.log"); if (!file.exists()) { file.getParentFile().mkdirs(); } FileOutputStream fos = new FileOutputStream(file); fos.write(info.getBytes()); fos.flush(); fos.close(); } catch (Exception e) { e.printStackTrace(); } }
请注意,保存崩溃信息需要 WRITE_EXTERNAL_STORAGE 权限。如果你使用 Android 6.0 及以上版本,请在运行时动态请求 WRITE_EXTERNAL_STORAGE 权限。