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

Sha*_*zal 6 android crashlytics twitter-fabric

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

我尝试了这个解决方案,但它仍然没有工作,崩溃报告仍然被发送到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;
        }
    });
Run Code Online (Sandbox Code Playgroud)

这个问题有没有解决方案?

谢谢.

小智 5

初始化Fabric会创建一个单例实例,并在您调用时返回相同的实例Fabric.with(...).因此,您的代码内部onPreferenceChange对Fabric类没有影响.

解决此问题的唯一方法是,如果库本身提供启用或禁用崩溃的方法.因此,up-till now(crashlytics:2.5.2)没有解决方案在运行时启用/禁用crashlytics.你必须在启动时这样做:

Fabric.with(this, new Crashlytics.Builder()
    .core(new CrashlyticsCore.Builder()
    .disabled(true).build()).build());
Run Code Online (Sandbox Code Playgroud)