private boolean writeToSDCard(Throwable ex) { boolean isDealing = false; if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { RandomAccessFile randomAccessFile = null; try { String fileName = SDCARDROOT + File.separator + "logs" + File.separator + "crash" + File.separator; File file = new File(fileName); if(!file.exists()) file.mkdirs(); randomAccessFile = new RandomAccessFile(fileName + paserTime(System.currentTimeMillis())+ ".log", "rw"); long fileLength = randomAccessFile.length(); randomAccessFile.seek(fileLength); randomAccessFile.writeBytes(getThrowableInfo(ex)); } catch (IOException e) { e.printStackTrace(); } finally { if (randomAccessFile != null) { try { randomAccessFile.close(); isDealing = true; } catch (IOException e) { e.printStackTrace(); } } } } return isDealing; }
private static String getThrowableInfo(Throwable ex) { StringWriter stringWriter = new StringWriter(); PrintWriter printWriter = new PrintWriter(stringWriter); ex.printStackTrace(printWriter); return stringWriter.toString(); }