package com.robert.maps.applib.utils; import java.io.PrintWriter; import java.io.StringWriter; import java.lang.Thread.UncaughtExceptionHandler; import android.app.Activity; import android.content.SharedPreferences; import android.os.Process; public class CrashReportHandler implements UncaughtExceptionHandler { private Activity m_context; private String mLogFileName; public static void attach(Activity context) { Thread.setDefaultUncaughtExceptionHandler( new CrashReportHandler(context) ); } ///////////////////////////////////////////// implementation private CrashReportHandler(Activity context) { m_context=context; mLogFileName = Ut.getRMapsMainDir(context, "")+"/log.txt"; } public void uncaughtException(Thread thread, Throwable exception) { StringWriter stackTrace=new StringWriter(); exception.printStackTrace(new PrintWriter(stackTrace)); SharedPreferences uiState = m_context.getPreferences(0); SharedPreferences.Editor editor = uiState.edit(); editor.putString("error", stackTrace.toString()); editor.commit(); Ut.appendLog(mLogFileName, String.format("%tc", System.currentTimeMillis())); Ut.appendLog(mLogFileName, stackTrace.toString()); // from RuntimeInit.crash() Process.killProcess(Process.myPid()); System.exit(10); } }