diff --git a/android/app/src/main/java/app/organicmaps/SplashActivity.java b/android/app/src/main/java/app/organicmaps/SplashActivity.java index f46babb906..c7f376e5f7 100644 --- a/android/app/src/main/java/app/organicmaps/SplashActivity.java +++ b/android/app/src/main/java/app/organicmaps/SplashActivity.java @@ -7,6 +7,7 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.os.Bundle; +import android.util.Log; import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; @@ -21,6 +22,7 @@ import app.organicmaps.location.LocationHelper; import app.organicmaps.util.Config; import app.organicmaps.util.LocationUtils; import app.organicmaps.util.ThemeUtils; +import app.organicmaps.util.Utils; import app.organicmaps.util.concurrency.UiThread; import app.organicmaps.util.log.Logger; import com.google.android.material.dialog.MaterialAlertDialogBuilder; @@ -103,13 +105,20 @@ public class SplashActivity extends AppCompatActivity mPermissionRequest = null; } - private void showFatalErrorDialog(@StringRes int titleId, @StringRes int messageId) + private void showFatalErrorDialog(@StringRes int titleId, @StringRes int messageId, Exception error) { mCanceled = true; new MaterialAlertDialogBuilder(this, R.style.MwmTheme_AlertDialog) .setTitle(titleId) .setMessage(messageId) - .setNegativeButton(R.string.ok, (dialog, which) -> SplashActivity.this.finish()) + .setPositiveButton( + R.string.report_a_bug, + (dialog, which) -> Utils.sendBugReport( + this, + "Fatal Error", + Log.getStackTraceString(error) + ) + ) .setCancelable(false) .show(); } @@ -121,9 +130,9 @@ public class SplashActivity extends AppCompatActivity try { asyncContinue = app.init(this::processNavigation); - } catch (IOException e) + } catch (IOException error) { - showFatalErrorDialog(R.string.dialog_error_storage_title, R.string.dialog_error_storage_message); + showFatalErrorDialog(R.string.dialog_error_storage_title, R.string.dialog_error_storage_message, error); return; }