For the time being, I solved the problem the old Java way:
Extend Answers using a sort-of singleton:
public class CustomAnswers extends Answers {
private static CustomAnswers instance;
private boolean mEnabled;
private CustomAnswers(boolean enabled) {
super();
mEnabled = enabled;
}
public static synchronized void init(boolean enabled) {
if (instance == null) {
instance = new CustomAnswers(enabled);
}
}
public static synchronized CustomAnswers get() {
return instance;
}
@Override
public void logSignUp(SignUpEvent event) {
if (mEnabled) {
super.logSignUp(event);
}
}
// (...)
}
Initialize Crashlytics with Answers implementation:
boolean isDebug = DebugHelper.isDebugVersion(this);
CustomAnswers.init(!isDebug);
CrashlyticsCore crashlyticsCore =
new CrashlyticsCore.Builder().disabled(isDebug).build();
Fabric.with(this, new Crashlytics.Builder()
.core(crashlyticsCore).answers(CustomAnswers.get()).build());
Use Answers implementation for events:
CustomAnswers.get().logInvite(new InviteEvent());
This will disable events being logged.
Note that, as described in my first post, Answers.getInstance() will return null and not your CustomAnswers instance in that case.