Show stack trace in the error activity
Bug: 384976698
Test: forcibly trigger an error
Change-Id: Ib92601ff5d644582952d6d9f392609402cb2674a
diff --git a/android/TerminalApp/java/com/android/virtualization/terminal/ErrorActivity.java b/android/TerminalApp/java/com/android/virtualization/terminal/ErrorActivity.java
index 44dcce5..7099f22 100644
--- a/android/TerminalApp/java/com/android/virtualization/terminal/ErrorActivity.java
+++ b/android/TerminalApp/java/com/android/virtualization/terminal/ErrorActivity.java
@@ -25,6 +25,10 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
public class ErrorActivity extends BaseActivity {
private static final String EXTRA_CAUSE = "cause";
@@ -59,7 +63,8 @@
Exception e = intent.getParcelableExtra(EXTRA_CAUSE, Exception.class);
TextView cause = findViewById(R.id.cause);
if (e != null) {
- cause.setText(getString(R.string.error_code, e.toString()));
+ String stackTrace = getStackTrace(e);
+ cause.setText(getString(R.string.error_code, stackTrace));
} else {
cause.setText(null);
}
@@ -69,4 +74,15 @@
Intent intent = new Intent(this, SettingsRecoveryActivity.class);
startActivity(intent);
}
+
+ private static String getStackTrace(Exception e) {
+ try (StringWriter sWriter = new StringWriter();
+ PrintWriter pWriter = new PrintWriter(sWriter)) {
+ e.printStackTrace(pWriter);
+ return sWriter.toString();
+ } catch (IOException ex) {
+ // This shall never happen
+ throw new RuntimeException(ex);
+ }
+ }
}