如何在用户更改首选项时在运行时禁用Crashlytics / Fabric

时间:2015-08-23 16:15:08

标签: android crashlytics twitter-fabric

我正在使用com.crashlytics.sdk.android:crashlytics:2.3.2@aar版本的crashlytics,如果用户退出,我会禁用崩溃报告。

我尝试了this解决方案,但仍然无效,崩溃报告仍然发送给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 个答案:

答案 0 :(得分:5)

Fabric on initialization创建一个单例实例,并在您调用Fabric.with(...)时返回相同的实例。因此,onPreferenceChange中的代码对Fabric类没有影响。

此问题的唯一解决方案是,如果库本身提供启用或禁用崩解的方法。因此,向上现在(crashlytics:2.5.2无解决方案在运行时启用/禁用crashlytics。你必须在启动时这样做:

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