Как отключить Crashlytics/Fabric во время выполнения, когда пользователь меняет настройки

Я использую com.crashlytics.sdk.android:crashlytics:[email protected] версию crashlytics, и я отключу отчет о сбоях, если пользователь откажется.

Я попробовал это решение, но все же оно не работает, отчеты о сбоях все еще отправляются в Fabric.

Я делаю это как:

Preference errorReportingEnabled = findPreference(MatlistanPrefs.BUGREPORTS_SEND_AUTOMATICALLY);
    errorReportingEnabled.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
        @Override
        public boolean onPreferenceChange(Preference preference, Object newValue) {

            Boolean value = (Boolean) newValue;

            Fabric.with(DataCollectionSettingsActivity.this, new Crashlytics.Builder().
                    core(new CrashlyticsCore.Builder().disabled(!value).build())
                    .build());
            return true;
        }
    });

Есть ли какое-либо рабочее решение для этой проблемы?

Спасибо.

Ответ 1

Ткань при инициализации создает экземпляр singleton и возвращает тот же экземпляр, когда вы вызываете Fabric.with(...). Таким образом, ваш код внутри onPreferenceChange не влияет на класс Fabric.

Единственное решение этой проблемы может быть в том случае, если сама библиотека предоставляет методы включения или отключения краш-тестов. Итак, вверх-до теперь (crashlytics:2.5.2) существует нет решения, чтобы включить/отключить краш-тесты во время выполнения. Вы должны сделать это при запуске следующим образом:

Fabric.with(this, new Crashlytics.Builder()
    .core(new CrashlyticsCore.Builder()
    .disabled(true).build()).build());