package com.tns; import java.lang.Thread.UncaughtExceptionHandler; import android.content.Context; public class NativeScriptUncaughtExceptionHandler implements UncaughtExceptionHandler { private final Context context; private final UncaughtExceptionHandler defaultHandler; private final Logger logger; public NativeScriptUncaughtExceptionHandler(Logger logger, Context context) { this.logger = logger; this.context = context; defaultHandler = Thread.getDefaultUncaughtExceptionHandler(); } @Override public void uncaughtException(Thread thread, Throwable ex) { String currentThreadMessage = "An uncaught Exception occurred on \"" + thread.getName() + "\" thread.\n"; String errorMessage = currentThreadMessage + ErrorReport.getErrorMessage(ex); if (Runtime.isInitialized()) { try { ex.printStackTrace(); Runtime runtime = Runtime.getCurrentRuntime(); if (runtime != null) { runtime.passUncaughtExceptionToJs(ex, errorMessage); } } catch (Throwable t) { t.printStackTrace(); } } if (logger.isEnabled()) { logger.write("Uncaught Exception Message=" + errorMessage); } if (!ErrorReport.startActivity(context, errorMessage) && defaultHandler != null) { defaultHandler.uncaughtException(thread, ex); } } }