Отправка отчета о сбое по электронной почте с помощью DefaultExceptionHandler
фон
Я пытаюсь перехватить все сбои и позволить пользователю отправить свой собственный отчет об ошибке по электронной почте.
Это очень временное решение, так как мне нужно отправить журналы приложения и другую информацию. он не предназначен для отправки конечным пользователям. только очень маленькая группа тестеров.
как это устроено
Во всяком случае, я создал класс, который расширяется от java.lang.Thread.UncaughtExceptionHandler и имеет функцию uncaughtException() . я зарегистрировался в нем с помощью Thread.setDefaultUncaughtExceptionHandler(), и он действительно ловит сбои.
функция сохраняет некоторые данные во внешнем хранилище и немедленно открывает приложение электронной почты (gmail) для отправки отчета о сбое.
эта проблема
это работает довольно хорошо, но по какой-то причине, когда я закрываю приложение электронной почты, само приложение перезапускается.
я пробовал несколько комбинаций:
- System.exit (0)
- android.os.Process.killProcess (android.os.Process.myPid ());
- вызывая UncaughtExceptionHandler по умолчанию.
никто не работал. оно закрывает приложение, но как только оно закрывается, приложение перезапускается само
я также не могу узнать, как делать вещи, которые работают в потоке пользовательского интерфейса при захвате сбоев (например, тосты, диалоги,...) .
Другое решение, которое я попробовал, - это открытие нового действия, которое отправит отчет о сбое. к сожалению, приложение даже не запустило активность.
Еще я попробовал прочитать из библиотеки ACRA, пытаясь выяснить, как они справляются со сбоями. к сожалению, я не понял, что там происходит, даже с высокого уровня.
Я искал здесь (на SO) для решения и нашел несколько сообщений, но ни один не работал для меня.
вопрос
как я могу избежать перезапуска приложения при закрытии приложения электронной почты?
1 ответ
Прочитав ваш вопрос, я подумал, что хочу дать отчет о сбое.
Вот мой результат: https://github.com/slightfoot/android-crash-reporting
В нем есть все, что вы хотели и, возможно, больше.