1package eu.siacs.conversations.utils;
2
3import android.content.Context;
4import android.support.annotation.NonNull;
5
6import java.io.PrintWriter;
7import java.io.StringWriter;
8import java.io.Writer;
9import java.lang.Thread.UncaughtExceptionHandler;
10
11import eu.siacs.conversations.services.NotificationService;
12
13public class ExceptionHandler implements UncaughtExceptionHandler {
14
15 private final UncaughtExceptionHandler defaultHandler;
16 private final Context context;
17
18 ExceptionHandler(final Context context) {
19 this.context = context;
20 this.defaultHandler = Thread.getDefaultUncaughtExceptionHandler();
21 }
22
23 @Override
24 public void uncaughtException(@NonNull Thread thread, final Throwable throwable) {
25 NotificationService.cancelIncomingCallNotification(context);
26 final Writer stringWriter = new StringWriter();
27 final PrintWriter printWriter = new PrintWriter(stringWriter);
28 throwable.printStackTrace(printWriter);
29 final String stacktrace = stringWriter.toString();
30 printWriter.close();
31 ExceptionHelper.writeToStacktraceFile(context, stacktrace);
32 this.defaultHandler.uncaughtException(thread, throwable);
33 }
34
35}