ExceptionHandler.java

 1package eu.siacs.conversations.utils;
 2
 3import android.content.Context;
 4import androidx.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}