随着谷歌发出一系列关于让用户选择加入崩溃报告的警告(source),我正在尝试为Firebase Crashlytics构建一个选择加入对话框 .
为了能够做到这一点,我需要知道Crashlytics目前是否已启用(决定是否显示对话框) . 似乎 CrashlyticsCore.disabled
负责跟踪这个,但我没有't found any way to access the value because it' s软件包私有,没有访问者 . 如果启用Firebase Crashlytics,如何在运行时知道?
我需要做的第二件事是默认禁用崩溃报告,并在用户同意选择加入时启用它 . 我怀疑是怎么做到的:
AndroidManifest:
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="false" />
活动:
boolean userAgrees = true;
CrashlyticsCore core = new CrashlyticsCore.Builder().disabled(!userAgrees).build();
Fabric.with(this, new Crashlytics.Builder().core(core).build());
throw new RuntimeException("why doesn't this show up in Firebase Crashlytics?");
为什么我的RuntimeException不会出现在Firebase Crashlytics中?
附:在删除这些创建选择加入对话框的尝试时,Crashlytics工作正常 .
1 回答
似乎切换Crashlytics只会生效 after your app restarts .
Fabric
是一个单例,所有对其Fabric.with
方法的调用在初始化后都将被忽略 .源代码如下 .
解决这个问题的一种方法是使用
SharedPreferences
或其他持久存储方法自行跟踪值,并相应地更新UI .