ExceptionHandler.java

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