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

Posted

技术标签:

【中文标题】当用户更改首选项时如何在运行时禁用 Crashlytics/Fabric【英文标题】:How to Disable Crashlytics/Fabric at Runtime when User Changes Preferences 【发布时间】:2015-08-23 16:15:08 【问题描述】:

我正在使用 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】:

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

如果库本身提供启用或禁用崩溃分析的方法,则此问题的唯一解决方案可能是。因此,直到现在 (crashlytics:2.5.2) 没有解决方案在运行时启用/禁用 crashlytics。你必须在启动时这样做:

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

【讨论】:

以上是关于当用户更改首选项时如何在运行时禁用 Crashlytics/Fabric的主要内容,如果未能解决你的问题,请参考以下文章

当我更改视图时,为啥我的按钮首选项/参数会重置?

如何在运行时禁用 Crashlytics for iOS?

iCloud KeyValueStore 首选项更改并在各种设备上处理它们

如何在 MFC 应用程序首次启动时禁用自动文档/视图创建

请问如何添加运行时选项来禁用检查或此警告

共享首选项编辑器需要花费大量时间来提交更改