Поймать исключение с UncaughtExceptionHandler, но показать диалог сбоя
Я реализовал ExceptionHandler, чтобы приложение не запускало активность, которая дает сбой, и она работает. Моя проблема в том, что он больше не отображает диалог ошибки. Вот код ExceptionHandler:
public class MyExceptionHandler implements
java.lang.Thread.UncaughtExceptionHandler {
private final Context myContext;
private final Class<?> myActivityClass;
public MyExceptionHandler(Context context, Class<?> c) {
myContext = context;
myActivityClass = c;
}
public void uncaughtException(Thread thread, Throwable exception) {
StringWriter stackTrace = new StringWriter();
exception.printStackTrace(new PrintWriter(stackTrace));
System.err.println(stackTrace);// You can use LogCat too
Intent intent = new Intent(myContext, myActivityClass);
String s = stackTrace.toString();
//you can use this String to know what caused the exception and in which Activity
intent.putExtra("uncaughtException",
"Exception is: " + stackTrace.toString());
intent.putExtra("stacktrace", s);
myContext.startActivity(intent);
//for restarting the Activity
Process.killProcess(Process.myPid());
System.exit(0);
}
}
У кого-нибудь есть идея, как вывести на экран нормальный черный диалог сбоя перед перезапуском приложения?
Заранее спасибо!
1 ответ
Я нашел решение. Проблема была:
Intent intent = new Intent(myContext, myActivityClass);
String s = stackTrace.toString();
//you can use this String to know what caused the exception and in which Activity
intent.putExtra("uncaughtException",
"Exception is: " + stackTrace.toString());
intent.putExtra("stacktrace", s);
myContext.startActivity(intent);
Удалив startActivity, решил проблему с диалоговым окном и все еще перезапустил приложение, как и ожидалось.
РЕДАКТИРОВАТЬ:
Диалоговое окно, но только потому, что произошел сбой второго из-за отсутствия данных, поэтому этот ответ не является правильным...