package com.jdroid.android.crashlytics; import android.app.Activity; import com.crashlytics.android.Crashlytics; import com.jdroid.android.analytics.AbstractAnalyticsTracker; import com.jdroid.android.context.SecurityContext; import com.jdroid.android.exception.DefaultExceptionHandler; import java.util.List; import java.util.Map; import java.util.Map.Entry; public class CrashlyticsTracker extends AbstractAnalyticsTracker { private static final CrashlyticsTracker INSTANCE = new CrashlyticsTracker(); public static CrashlyticsTracker get() { return INSTANCE; } @Override public Boolean isEnabled() { return CrashlyticsAppModule.get().getCrashlyticsAppContext().isCrashlyticsEnabled(); } @Override public void onInitExceptionHandler(Map<String, String> metadata) { if (metadata != null) { for (Entry<String, String> entry : metadata.entrySet()) { if (entry.getValue() != null) { Crashlytics.getInstance().core.setString(entry.getKey(), entry.getValue()); } } } } @Override public void trackHandledException(Throwable throwable, List<String> tags) { if (areTagsEnabled()) { DefaultExceptionHandler.addTags(throwable, tags); } Crashlytics.getInstance().core.logException(throwable); } protected Boolean areTagsEnabled() { return false; } @Override public void trackErrorBreadcrumb(String message) { Crashlytics.getInstance().core.log(message); } @Override public void onActivityStart(Class<? extends Activity> activityClass, String referrer, Object data) { if (referrer != null) { Crashlytics.getInstance().core.setString("Referrer", referrer); } Crashlytics.getInstance().core.setString("UserId", SecurityContext.get().isAuthenticated() ? SecurityContext.get().getUser().getId().toString() : null); Crashlytics.getInstance().core.log("Started " + activityClass.getSimpleName()); } }