/*
- * Copyright © 2019 Damyan Ivanov.
+ * Copyright © 2020 Damyan Ivanov.
* This file is part of MoLe.
* MoLe is free software: you can distribute it and/or modify it
* under the term of the GNU General Public License as published by
package net.ktnx.mobileledger.ui.activity;
+import android.content.pm.PackageInfo;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
import net.ktnx.mobileledger.ui.CrashReportDialogFragment;
import java.io.PrintWriter;
import java.io.StringWriter;
-import androidx.annotation.Nullable;
-import androidx.appcompat.app.AppCompatActivity;
+import static net.ktnx.mobileledger.utils.Logger.debug;
public abstract class CrashReportingActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
- @Override
- public void uncaughtException(Thread t, Throwable e) {
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
+ Thread.setDefaultUncaughtExceptionHandler((t, e) -> {
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
- pw.format("OS version: %s; API level %d\n\n", Build.VERSION.RELEASE,
- Build.VERSION.SDK_INT);
- e.printStackTrace(pw);
+ try {
+ PackageInfo pi = getApplicationContext().getPackageManager()
+ .getPackageInfo(getPackageName(), 0);
+ pw.format("MoLe version: %s\n", pi.versionName);
+ }
+ catch (Exception oh) {
+ pw.print("Error getting package version:\n");
+ oh.printStackTrace(pw);
+ pw.print("\n");
+ }
+ pw.format("OS version: %s; API level %d\n\n", Build.VERSION.RELEASE,
+ Build.VERSION.SDK_INT);
+ e.printStackTrace(pw);
- Log.e(null, sw.toString());
+ Log.e(null, sw.toString());
- CrashReportDialogFragment df = new CrashReportDialogFragment();
- df.setCrashReportText(sw.toString());
- df.show(getSupportFragmentManager(), "crash_report");
- }
+ CrashReportDialogFragment df = new CrashReportDialogFragment();
+ df.setCrashReportText(sw.toString());
+ df.show(getSupportFragmentManager(), "crash_report");
});
- Log.d("crash", "Uncaught exception handler set");
+ debug("crash", "Uncaught exception handler set");
}
}