随着Google发出一系列警告,让用户选择加入崩溃报告(source),我试图为Firebase Crashlytics构建一个选择加入对话框。
为了能够做到这一点,我需要知道Crashlytics目前是否已启用(决定是否显示对话框)。似乎CrashlyticsCore.disabled
负责跟踪此信息,但我还没有找到任何方法来访问该值,因为它的软件包是私有的,并且没有访问者。如果启用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中?
P.S。在删除这些创建选择加入对话框的尝试时,Crashlytics正常工作。
答案 0 :(得分:0)
似乎切换到Crashlytics只会在您的应用重启后生效。 Fabric
是一个单例,所有对Fabric.with
方法的调用在初始化后都会被忽略。
以下源代码。
public static Fabric with(Context context, Kit... kits) {
if (singleton == null) {
Class var2 = Fabric.class;
synchronized(Fabric.class) {
if (singleton == null) {
setFabric((new Fabric.Builder(context)).kits(kits).build());
}
}
}
return singleton;
}
一种方法是使用SharedPreferences
或其他持久存储方法自行跟踪值,并相应地更新UI。