package org.commcare.utils; import android.app.Application; import android.webkit.URLUtil; import org.acra.ACRA; import org.acra.config.ConfigurationBuilder; import org.commcare.android.logging.ReportingUtils; import org.commcare.dalvik.BuildConfig; /** * Contains constants and methods used in ACRA reporting. * * Created by wpride1 on 3/3/15. */ public class ACRAUtil { private static final String POST_URL = "post_url"; private static final String VERSION = "version"; private static final String DOMAIN = "domain"; private static final String USERNAME = "username"; private static boolean isAcraConfigured = false; /** * Add debugging value to the ACRA report bundle. Only most recent value * stored for each key. */ private static void addCustomData(String key, String value) { ACRA.getErrorReporter().putCustomData(key, value); } public static void reportException(Exception e) { if (isAcraConfigured) { ACRA.getErrorReporter().handleException(e); } } public static void initACRA(Application app) { String url = BuildConfig.ACRA_URL; if (URLUtil.isValidUrl(url)) { ConfigurationBuilder acraConfigBuilder = new ConfigurationBuilder(app); acraConfigBuilder.setFormUriBasicAuthLogin(BuildConfig.ACRA_USER); acraConfigBuilder.setFormUriBasicAuthPassword(BuildConfig.ACRA_PASSWORD); acraConfigBuilder.setFormUri(url); ACRA.init(app, acraConfigBuilder); isAcraConfigured = true; } } public static void registerAppData() { if (isAcraConfigured) { addCustomData(ACRAUtil.POST_URL, ReportingUtils.getPostURL()); addCustomData(ACRAUtil.VERSION, ReportingUtils.getVersion()); addCustomData(ACRAUtil.DOMAIN, ReportingUtils.getDomain()); } } public static void registerUserData() { if (isAcraConfigured) { ACRAUtil.addCustomData(ACRAUtil.USERNAME, ReportingUtils.getUser()); } } }