public static void check() { HashMap<String, String> old = new HashMap<String, String>(codecs.size()); for (Codec c : codecs) { c.update(); old.put(c.name(), c.getValue()); if (!c.isLoaded()) { SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(Receiver.mContext); SharedPreferences.Editor e = sp.edit(); e.putString(c.key(), "never"); e.commit(); } } for (Codec c : codecs) if (!old.get(c.name()).equals("never")) { c.init(); if (c.isLoaded()) { SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(Receiver.mContext); SharedPreferences.Editor e = sp.edit(); e.putString(c.key(), old.get(c.name())); e.commit(); c.init(); } else c.fail(); } }
@Override public boolean onPreferenceTreeClick(PreferenceScreen ps, Preference p) { ListPreference l = (ListPreference) p; for (Codec c : codecs) if (c.key().equals(l.getKey())) { c.init(); if (!c.isLoaded()) { l.setValue("never"); c.fail(); l.setEnabled(false); l.setSummary(l.getEntry()); if (l.getDialog() != null) l.getDialog().dismiss(); } } return super.onPreferenceTreeClick(ps, p); }