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();
  }