From a32ac08147dbdd240f93e82e73ef344fc08ca072 Mon Sep 17 00:00:00 2001 From: obs Date: Tue, 12 Jul 2016 17:24:13 +0200 Subject: [PATCH] log exceptions --- .../com/github/ma1co/pmcademo/app/Logger.java | 2 +- .../bettermanual/CustomExceptionHandler.java | 27 +++++++++++++++++++ .../obsidium/bettermanual/ManualActivity.java | 3 +++ 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/obsidium/bettermanual/CustomExceptionHandler.java diff --git a/app/src/main/java/com/github/ma1co/pmcademo/app/Logger.java b/app/src/main/java/com/github/ma1co/pmcademo/app/Logger.java index f5e8ec1..d37b104 100644 --- a/app/src/main/java/com/github/ma1co/pmcademo/app/Logger.java +++ b/app/src/main/java/com/github/ma1co/pmcademo/app/Logger.java @@ -6,7 +6,7 @@ public class Logger { public static File getFile() { - return new File(Environment.getExternalStorageDirectory(), "PMCADEMO/LOG.TXT"); + return new File(Environment.getExternalStorageDirectory(), "BMANUAL/LOG.TXT"); } protected static void log(String msg) { diff --git a/app/src/main/java/com/obsidium/bettermanual/CustomExceptionHandler.java b/app/src/main/java/com/obsidium/bettermanual/CustomExceptionHandler.java new file mode 100644 index 0000000..e0f01b4 --- /dev/null +++ b/app/src/main/java/com/obsidium/bettermanual/CustomExceptionHandler.java @@ -0,0 +1,27 @@ +package com.obsidium.bettermanual; + +import com.github.ma1co.pmcademo.app.Logger; + +import java.io.PrintWriter; +import java.io.StringWriter; +import java.io.Writer; + +public class CustomExceptionHandler implements Thread.UncaughtExceptionHandler +{ + private final Thread.UncaughtExceptionHandler defaultUEH; + + public CustomExceptionHandler() + { + this.defaultUEH = Thread.getDefaultUncaughtExceptionHandler(); + } + + public void uncaughtException(Thread t, Throwable e) { + final Writer result = new StringWriter(); + final PrintWriter printWriter = new PrintWriter(result); + e.printStackTrace(printWriter); + String stacktrace = result.toString(); + printWriter.close(); + Logger.error(stacktrace); + defaultUEH.uncaughtException(t, e); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/obsidium/bettermanual/ManualActivity.java b/app/src/main/java/com/obsidium/bettermanual/ManualActivity.java index 101f28c..0a4a588 100644 --- a/app/src/main/java/com/obsidium/bettermanual/ManualActivity.java +++ b/app/src/main/java/com/obsidium/bettermanual/ManualActivity.java @@ -164,6 +164,9 @@ protected void onCreate(Bundle savedInstanceState) setContentView(R.layout.activity_manual); + if (!(Thread.getDefaultUncaughtExceptionHandler() instanceof CustomExceptionHandler)) + Thread.setDefaultUncaughtExceptionHandler(new CustomExceptionHandler()); + SurfaceView surfaceView = (SurfaceView) findViewById(R.id.surfaceView); surfaceView.setOnTouchListener(new SurfaceSwipeTouchListener(this)); m_surfaceHolder = surfaceView.getHolder();