我想在Android应用的设置活动中提供一个设置,允许用户禁用我们对分析软件的使用,包括Crashlytics。但是,在用户访问设置页面之前很久就会调用Crashlytics.start(Context)
,并且我看不到等效的Crashlytics.stop(Context)
函数。是否可以在应用程序启动后停止Crashlytics?
答案 0 :(得分:3)
我已被告知我目前无法尝试具体案例。但是,通过启用"隐私提示"我可以让用户控制是否向Crashlytics发送数据。在Crashlytics仪表板的应用程序设置部分:
Go here选择要添加对话框的应用,然后点击"启用隐私提示"在左上角。
答案 1 :(得分:1)
这很容易做到。
@Override
public void uncaughtException(Thread thread, Throwable ex) {
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(MyApplication.getAppContext());
Boolean send = sharedPref.getBoolean(MySettingsActivity.KEY_PREF_SEND_ERROR, true);
if (send) {
orgHandler.uncaughtException(thread, ex);
} else
System.exit(0);
}
答案 2 :(得分:0)
启动后无法停止Crashlytics,但可以通过覆盖默认的UncaughtExceptionHandler达到所需的行为:
final Thread.UncaughtExceptionHandler defaultExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
Fabric.with(this, new Crashlytics());
final Thread.UncaughtExceptionHandler crashlyticsExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler((t, e) -> {
if (isAnalyticsAllowed) {
crashlyticsExceptionHandler.uncaughtException(t, e);
} else {
defaultExceptionHandler.uncaughtException(t, e);
}
});