1 package de.dhbwloe.campusapp;
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.view.View;
6 import android.view.Window;
7 import android.webkit.WebView;
8 import android.widget.Button;
9 import android.widget.EditText;
10 import android.widget.ProgressBar;
13 * Created by pk910 on 11.03.2016.
15 public class CampusAppCrashHandler extends Activity {
16 private static boolean crashLogWindowOpened = false;
17 private static final Object crashWindowLock = new Object();
19 private String crashdate, stacktrace;
20 private CampusAppExceptionHandler exceptionHandler;
23 public void onCreate(Bundle savedInstanceState)
25 super.onCreate(savedInstanceState);
27 synchronized (crashWindowLock) {
28 if(crashLogWindowOpened) {
29 int p = android.os.Process.myPid();
30 android.os.Process.killProcess(p);
33 crashLogWindowOpened = true;
36 requestWindowFeature(Window.FEATURE_NO_TITLE); // make a window without a titlebar
37 setContentView(R.layout.crash_log);
38 final Activity that = this;
40 Bundle extras = getIntent().getExtras();
41 crashdate = (extras != null ? extras.getString("crashdate") : null);
43 EditText crashLog = (EditText) findViewById(R.id.crashLog);
44 exceptionHandler = new CampusAppExceptionHandler();
45 stacktrace = exceptionHandler.getCrashStacktrace(that, crashdate);
46 crashLog.setText(stacktrace);
48 Button sendButton = (Button) findViewById(R.id.sendCrashLog);
49 sendButton.setOnClickListener(new View.OnClickListener() {
51 public void onClick(View v) {
52 Button sendButton = (Button) v;
53 ProgressBar sendProgress = (ProgressBar) findViewById(R.id.sendProgressBar);
56 sendButton.setEnabled(false);
57 sendProgress.setVisibility(View.VISIBLE);
60 exceptionHandler.postprocessException(crashdate, stacktrace, new CampusAppExceptionHandler.PostProcessingCallback() {
62 public void onPostProcessFinished(String response) {
63 ProgressBar sendProgress = (ProgressBar) findViewById(R.id.sendProgressBar);
64 WebView reportResponse = (WebView) findViewById(R.id.crashReportResponse);
66 sendProgress.setVisibility(View.GONE);
67 reportResponse.setVisibility(View.VISIBLE);
68 reportResponse.loadData(response, "text/html", null);