package com.jdroid.android.debug; import android.app.Activity; import android.preference.CheckBoxPreference; import android.preference.ListPreference; import android.preference.Preference; import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceGroup; import android.preference.PreferenceManager; import com.jdroid.android.R; import com.jdroid.android.application.AbstractApplication; import com.jdroid.java.collections.Lists; import com.jdroid.java.utils.IdGenerator; import java.util.List; public class ExceptionHandlingDebugPrefsAppender extends PreferencesAppender { private static final String UI_THREAD_KEY = "uiThread"; private static final String CRASH_TYPE_KEY = "crashType"; @Override public int getNameResId() { return R.string.jdroid_exceptionHandlingSettings; } @Override public void initPreferences(Activity activity, PreferenceGroup preferenceGroup) { ListPreference preference = new ListPreference(activity); preference.setKey(CRASH_TYPE_KEY); preference.setTitle(R.string.jdroid_exceptionType); preference.setDialogTitle(R.string.jdroid_exceptionType); preference.setSummary(R.string.jdroid_exceptionType); List<CharSequence> entries = Lists.newArrayList(); for (ExceptionType each : ExceptionType.values()) { entries.add(each.name()); } preference.setEntries(entries.toArray(new CharSequence[0])); preference.setEntryValues(entries.toArray(new CharSequence[0])); preferenceGroup.addPreference(preference); CheckBoxPreference checkBoxPreference = new CheckBoxPreference(activity); checkBoxPreference.setKey(UI_THREAD_KEY); checkBoxPreference.setTitle(R.string.jdroid_uiThread); checkBoxPreference.setSummary(R.string.jdroid_uiThread); preferenceGroup.addPreference(checkBoxPreference); Preference crashPreference = new Preference(activity); crashPreference.setTitle(R.string.jdroid_crash); crashPreference.setSummary(R.string.jdroid_crash); crashPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { Boolean uiThread = PreferenceManager.getDefaultSharedPreferences(AbstractApplication.get()).getBoolean( UI_THREAD_KEY, false); ExceptionType exceptionType = ExceptionType.valueOf(PreferenceManager.getDefaultSharedPreferences( AbstractApplication.get()).getString(CRASH_TYPE_KEY, ExceptionType.UNEXPECTED_EXCEPTION.name())); CrashGenerator.crash(exceptionType, !uiThread); return true; } }); preferenceGroup.addPreference(crashPreference); Preference breadcrumbPreference = new Preference(activity); breadcrumbPreference.setTitle(R.string.jdroid_trackErrorBreadcrumb); breadcrumbPreference.setSummary(R.string.jdroid_trackErrorBreadcrumb); breadcrumbPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { AbstractApplication.get().getAnalyticsSender().trackErrorBreadcrumb("Sample message " + IdGenerator.getIntId()); return true; } }); preferenceGroup.addPreference(breadcrumbPreference); } }