From d6792fcf2cd006905cfc7e63e4e8825669f4cfa9 Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 6 Jun 2022 15:02:11 +0200 Subject: [PATCH] Display start errors --- .../java/eu/faircode/email/ActivityBase.java | 2 ++ .../java/eu/faircode/email/ActivityMain.java | 35 ++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/eu/faircode/email/ActivityBase.java b/app/src/main/java/eu/faircode/email/ActivityBase.java index 53cba1dc23..ac1a39e6aa 100644 --- a/app/src/main/java/eu/faircode/email/ActivityBase.java +++ b/app/src/main/java/eu/faircode/email/ActivityBase.java @@ -531,6 +531,8 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc Log.logExtras(intent); super.startActivity(intent); } catch (Throwable ex) { + if (this instanceof ActivityMain) + throw ex; Helper.reportNoViewer(this, intent, ex); } } diff --git a/app/src/main/java/eu/faircode/email/ActivityMain.java b/app/src/main/java/eu/faircode/email/ActivityMain.java index 393cc3b275..5eccf24546 100644 --- a/app/src/main/java/eu/faircode/email/ActivityMain.java +++ b/app/src/main/java/eu/faircode/email/ActivityMain.java @@ -21,15 +21,19 @@ package eu.faircode.email; import android.app.ActivityOptions; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Configuration; import android.net.Uri; import android.os.Build; import android.os.Bundle; +import android.view.LayoutInflater; import android.view.View; import android.widget.Button; +import android.widget.TextView; +import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; import androidx.preference.PreferenceManager; @@ -240,7 +244,36 @@ public class ActivityMain extends ActivityBase implements FragmentManager.OnBack @Override protected void onException(Bundle args, Throwable ex) { - Log.unexpectedError(getSupportFragmentManager(), ex); + // Log.unexpectedError() won't work here + Log.e(ex); + + LayoutInflater inflater = LayoutInflater.from(ActivityMain.this); + View dview = inflater.inflate(R.layout.dialog_unexpected, null); + TextView tvError = dview.findViewById(R.id.tvError); + + String message = Log.formatThrowable(ex, false); + tvError.setText(message); + + new AlertDialog.Builder(ActivityMain.this) + .setView(dview) + .setNegativeButton(android.R.string.cancel, null) + .setNeutralButton(R.string.menu_faq, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + Uri uri = Helper.getSupportUri(ActivityMain.this, "Main:error") + .buildUpon() + .appendQueryParameter("message", Log.formatThrowable(ex, false)) + .build(); + Helper.view(ActivityMain.this, uri, true); + } + }) + .setOnDismissListener(new DialogInterface.OnDismissListener() { + @Override + public void onDismiss(DialogInterface dialog) { + finish(); + } + }) + .show(); } };