Сообщить о всех Android сбоях в собственном API - PullRequest
0 голосов
/ 27 января 2020

Я нахожусь в ситуации, когда не могу использовать стороннюю платформу отчетности Cra sh (Crashalytics ... et c)

Итак, я начал использовать самостоятельно разработанный API Rest для получения cra sh отчетов из мобильного приложения.

Однако пока я могу отправлять обработанные сбои только с помощью try-catch

Как я могу обрабатывать все сбои, вызванные моим мобильным приложением, даже те, которые не являются в моих try-catch предложениях

Точно так же, как Crashlytics, который может отлавливать все сбои и отправлять их в Firebase без размещения try-catch

Ответы [ 2 ]

0 голосов
/ 27 января 2020

Посмотрите на Thread.UncaughtExceptionHandler

из документов:

Когда поток собирается завершить работу из-за неисследованного исключения, Java Виртуальная машина запросит поток для его UncaughtExceptionHandler, используя Thread.getUncaughtExceptionHandler (), и вызовет метод uncaughtException обработчика, передав поток и исключение в качестве аргументов. Если потоку не был явно установлен UncaughtExceptionHandler, то его объект ThreadGroup действует как его UncaughtExceptionHandler. Если у объекта ThreadGroup нет особых требований для работы с исключением, он может переслать вызов обработчику необработанных исключений по умолчанию.

, используя это, вы можете получить все потоки и все исключения, которые вы можете затем сообщите в любой API, который вы хотите

, вы можете найти примеры того, как это было реализовано здесь и здесь

0 голосов
/ 27 января 2020

Существует библиотека, которую вы можете использовать под названием ACRA , это библиотека с открытым исходным кодом, вы можете проверить ее код, или вы можете напрямую использовать их библиотеку и настроить ее на попадание в ваш API * 1004. *

@AcraHttpSender(uri = "http://yourserver.com/yourscript",
                basicAuthLogin = "yourlogin", // optional
                basicAuthPassword = "y0uRpa$$w0rd", // optional
                httpMethod = HttpSender.Method.POST)
public class MyApplication extends Application {
...