@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); PackageManager pm = getActivity().getPackageManager(); Intent mediaIntent = new Intent(Intent.ACTION_MEDIA_BUTTON); List<ResolveInfo> mAppsInfo = pm.queryBroadcastReceivers(mediaIntent, 0); ListPreference simpleAppListPref = (ListPreference) findPreference("selectapp"); ListPreference advancedAppListPref = (ListPreference) findPreference("selectadvancedapp"); ListPreference baudRatePref = (ListPreference) findPreference("baud_rate"); simpleAppListPref.setOnPreferenceChangeListener(this); advancedAppListPref.setOnPreferenceChangeListener(this); baudRatePref.setOnPreferenceChangeListener(this); baudRatePref.setTitle(baudRatePref.getEntry()); CharSequence[] mEntries; CharSequence[] mEntryValues; CharSequence[] mAdvEntries; CharSequence[] mAdvEntryValues; if (mAppsInfo.size() > 0) { mEntries = new CharSequence[mAppsInfo.size()]; mEntryValues = new CharSequence[mAppsInfo.size()]; mAdvEntries = new CharSequence[mAppsInfo.size() + 1]; mAdvEntryValues = new CharSequence[mAppsInfo.size() + 1]; mAdvEntries[0] = "PodMode"; mAdvEntryValues[0] = "me.spadival.podmode"; int i = 0; for (ResolveInfo info : mAppsInfo) { mEntries[i] = info.activityInfo.applicationInfo.loadLabel(pm); mEntryValues[i] = (String) info.activityInfo.packageName; mAdvEntries[i + 1] = mEntries[i]; mAdvEntryValues[i + 1] = mEntryValues[i]; i++; } simpleAppListPref.setSelectable(true); simpleAppListPref.setEntries(mEntries); simpleAppListPref.setEntryValues(mEntryValues); advancedAppListPref.setSelectable(true); advancedAppListPref.setEntries(mAdvEntries); advancedAppListPref.setEntryValues(mAdvEntryValues); boolean simpleAppEntryFound = false; String simpleAppName = (String) simpleAppListPref.getEntry(); if (simpleAppName != null) { for (i = 0; i < mEntries.length; i++) { if (simpleAppName.equals(mEntries[i])) { simpleAppEntryFound = true; } } } if (!simpleAppEntryFound) simpleAppListPref.setValue((String) mEntryValues[0]); simpleAppListPref.setTitle(simpleAppListPref.getEntry()); try { simpleAppListPref.setIcon(pm.getApplicationIcon(simpleAppListPref.getValue())); } catch (NameNotFoundException e) { e.printStackTrace(); } boolean advancedAppEntryFound = false; String advancedAppName = (String) advancedAppListPref.getEntry(); if (advancedAppName != null) { for (i = 0; i < mAdvEntries.length; i++) { if (advancedAppName.equals(mAdvEntries[i])) { advancedAppEntryFound = true; } } } if (!advancedAppEntryFound) advancedAppListPref.setValue((String) mAdvEntryValues[0]); advancedAppListPref.setTitle(advancedAppListPref.getEntry()); try { advancedAppListPref.setIcon(pm.getApplicationIcon(advancedAppListPref.getValue())); } catch (NameNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { simpleAppListPref.setTitle(R.string.no_media_player); simpleAppListPref.setEntries(null); simpleAppListPref.setEntryValues(null); simpleAppListPref.setEnabled(false); mAdvEntries = new CharSequence[1]; mAdvEntryValues = new CharSequence[1]; mAdvEntries[0] = "PodMode"; mAdvEntryValues[0] = "me.spadival.podmode"; advancedAppListPref.setTitle(mAdvEntries[0]); advancedAppListPref.setEntries(mAdvEntries); advancedAppListPref.setEntryValues(mAdvEntryValues); advancedAppListPref.setEnabled(false); } }