Crashlytics и обработчик исключений по умолчанию - PullRequest
0 голосов
/ 10 октября 2018

Я использую crashlytics для своего проекта Android, мое требование состоит в том, чтобы при сбое приложения я хотел выполнять свои собственные действия с отзывами, а также регистрировать это как фатальное исключение в crashlytics.Я попробовал подходы в принятом ответе: Crashlytics Android SDK - пользовательский UncaughtExceptionHandler , но асинхронная инициализация для меня не удалась.Итак, я попытался выполнить инициализацию синхронно, например:

Thread.UncaughtExceptionHandler defaultUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
    @Override
    public void uncaughtException(Thread thread, Throwable ex) {

      // launch feed back activity
      Intent intent = new Intent();
      intent.setAction("com.project.SEND_LOG");
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      startActivity(intent);


      defaultUncaughtExceptionHandler.uncaughtException(thread, ex);
    }
  });

Но это не запускает действие обратной связи (хотя выполняется код для запуска действия обратной связи), вместо этого он показывает поведение сбоя приложения по умолчанию в Android.Может кто-нибудь помочь мне с этим?

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

Из официального примера кода https://fabric.io/kits/android/crashlytics/features:

Убедитесь, что строка Fabric.with () идет после всех других сторонних SDK, которые устанавливают UncaughtExceptionHandler

Добавьте метаданные в свой AndroidManifest

<meta-data
            android:name="firebase_crashlytics_collection_enabled"
            android:value="false" />

Сначала установите UncaughtExceptionHandlers, затем запустите Fabric.

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Set all your UncaughtExceptionHandlers
        Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler());
        // Start your Crashlytics manually
        Fabric.with(this, new Crashlytics());
        ...
    }
}

Затем вы можете получить отчет о сбоях и отследить ошибку в своем собственномUncaughtExceptionHandler.Это работает на моем мобильном телефоне API27 с крэшлитиками: 2.10.1

0 голосов
/ 11 октября 2018

Спасибо.Это официально не поддерживается Crashlytics.Если вы найдете обходной путь, мы не сможем гарантировать, что он будет продолжать работать с обновлениями нашего SDK.

...