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);
+        }
+    }
 }