3d1b8c53e63a0cfe3157b4af049cc169f3344f83
[DHBWCampusApp.git] / app / src / main / java / de / dhbwloe / campusapp / CampusAppCrashHandler.java
1 package de.dhbwloe.campusapp;
2
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;
11
12 /**
13  * Created by pk910 on 11.03.2016.
14  */
15 public class CampusAppCrashHandler extends Activity {
16     private static boolean crashLogWindowOpened = false;
17     private static final Object crashWindowLock = new Object();
18
19     private String crashdate, stacktrace;
20     private CampusAppExceptionHandler exceptionHandler;
21
22     @Override
23     public void onCreate(Bundle savedInstanceState)
24     {
25         super.onCreate(savedInstanceState);
26
27         synchronized (crashWindowLock) {
28             if(crashLogWindowOpened) {
29                 int p = android.os.Process.myPid();
30                 android.os.Process.killProcess(p);
31                 return;
32             }
33             crashLogWindowOpened = true;
34         }
35
36         requestWindowFeature(Window.FEATURE_NO_TITLE); // make a window without a titlebar
37         setContentView(R.layout.crash_log);
38         final Activity that = this;
39
40         Bundle extras = getIntent().getExtras();
41         crashdate = (extras != null ? extras.getString("crashdate") : null);
42
43         EditText crashLog = (EditText) findViewById(R.id.crashLog);
44         exceptionHandler = new CampusAppExceptionHandler();
45         stacktrace = exceptionHandler.getCrashStacktrace(that, crashdate);
46         crashLog.setText(stacktrace);
47
48         Button sendButton = (Button) findViewById(R.id.sendCrashLog);
49         sendButton.setOnClickListener(new View.OnClickListener() {
50             @Override
51             public void onClick(View v) {
52                 Button sendButton = (Button) v;
53                 ProgressBar sendProgress = (ProgressBar) findViewById(R.id.sendProgressBar);
54
55
56                 sendButton.setEnabled(false);
57                 sendProgress.setVisibility(View.VISIBLE);
58
59
60                 exceptionHandler.postprocessException(crashdate, stacktrace, new CampusAppExceptionHandler.PostProcessingCallback() {
61                     @Override
62                     public void onPostProcessFinished(String response) {
63                         ProgressBar sendProgress = (ProgressBar) findViewById(R.id.sendProgressBar);
64                         WebView reportResponse = (WebView) findViewById(R.id.crashReportResponse);
65
66                         sendProgress.setVisibility(View.GONE);
67                         reportResponse.setVisibility(View.VISIBLE);
68                         reportResponse.loadData(response, "text/html", null);
69                     }
70                 });
71             }
72         });
73     }
74 }