From dabde3d4aa10e810b855376385f46218f38a492f Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 1 Dec 2018 10:58:19 +0100 Subject: [PATCH] Save unexpected errors --- .../java/eu/faircode/email/ApplicationEx.java | 7 +++--- .../main/java/eu/faircode/email/Helper.java | 23 ++++++++++++++----- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ApplicationEx.java b/app/src/main/java/eu/faircode/email/ApplicationEx.java index 027184986d..9dc9c2b6c5 100644 --- a/app/src/main/java/eu/faircode/email/ApplicationEx.java +++ b/app/src/main/java/eu/faircode/email/ApplicationEx.java @@ -23,6 +23,7 @@ import android.app.Application; import android.app.Notification; import android.app.NotificationChannel; import android.app.NotificationManager; +import android.content.Context; import android.os.Build; import android.os.DeadSystemException; import android.os.RemoteException; @@ -46,7 +47,7 @@ public class ApplicationEx extends Application { public void uncaughtException(Thread thread, Throwable ex) { if (ownFault(ex)) { Log.e(Helper.TAG, ex + "\r\n" + Log.getStackTraceString(ex)); - writeCrashLog(ex); + writeCrashLog(ApplicationEx.this, ex); if (prev != null) prev.uncaughtException(thread, ex); @@ -112,8 +113,8 @@ public class ApplicationEx extends Application { return false; } - private void writeCrashLog(Throwable ex) { - File file = new File(getCacheDir(), "crash.log"); + static void writeCrashLog(Context context, Throwable ex) { + File file = new File(context.getCacheDir(), "crash.log"); Log.w(Helper.TAG, "Writing exception to " + file); FileWriter out = null; diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index daa61065c3..0085a42457 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -171,12 +171,23 @@ public class Helper { return sb.toString(); } - static void unexpectedError(Context context, Throwable ex) { - new AlertDialog.Builder(context) - .setTitle(R.string.title_unexpected_error) - .setMessage(ex.toString()) - .setPositiveButton(android.R.string.cancel, null) - .show(); + static void unexpectedError(final Context context, final Throwable ex) { + Log.e(Helper.TAG, ex + "\n" + Log.getStackTraceString(ex)); + + if (context != null) { + new AlertDialog.Builder(context) + .setTitle(R.string.title_unexpected_error) + .setMessage(ex.toString()) + .setPositiveButton(android.R.string.cancel, null) + .show(); + + new Thread(new Runnable() { + @Override + public void run() { + ApplicationEx.writeCrashLog(context, ex); + } + }).start(); + } } static String humanReadableByteCount(long bytes, boolean si) {