private void initSmsApplicationSetting() { log("initSmsApplicationSetting:"); Collection<SmsApplicationData> smsApplications = SmsApplication.getApplicationCollection(getActivity()); // If the list is empty the dialog will be empty, but we will not crash. int count = smsApplications.size(); CharSequence[] entries = new CharSequence[count]; CharSequence[] entryValues = new CharSequence[count]; Drawable[] entryImages = new Drawable[count]; PackageManager packageManager = getPackageManager(); int i = 0; for (SmsApplicationData smsApplicationData : smsApplications) { entries[i] = smsApplicationData.mApplicationName; entryValues[i] = smsApplicationData.mPackageName; try { entryImages[i] = packageManager.getApplicationIcon(smsApplicationData.mPackageName); } catch (NameNotFoundException e) { entryImages[i] = packageManager.getDefaultActivityIcon(); } i++; } mSmsApplicationPreference.setEntries(entries); mSmsApplicationPreference.setEntryValues(entryValues); mSmsApplicationPreference.setEntryDrawables(entryImages); updateSmsApplicationSetting(); }