Android: How To Get List Of All Preference Xml's For My App And Read Them?
how to get list of all application preferences for application, 1. I am saving shared preference in this manner 2. I know that they are in data/data/app_packagename/shared_prefs
Solution 1:
Try this
File prefsdir = newFile(getApplicationInfo().dataDir,"shared_prefs");
if(prefsdir.exists() && prefsdir.isDirectory()){
String[] list = prefsdir.list();
ArrayAdapter<String> adapter = newArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, android.R.id.text1,list);
Spinner sp = (Spinner) findViewById(R.id.spinner1);
sp.setAdapter(adapter);
}
//To get the selected item
String item = (String) sp.getSelectedItem();
//remove .xml from the file nameString preffile = item.substring(0, item.length()-4);
SharedPreferences sp2 = getSharedPreferences(preffile, MODE_PRIVATE);
Map<String, ?> map = sp2.getAll();
for (Entry<String, ?> entry : map.entrySet()){
System.out.println("key is "+ entry.getKey() + " and value is " + entry.getValue());
}
Solution 2:
If you want to use reflection, there is an @hide function Context#getSharedPrefsFile(String name)
So you would call
Context#getSharedPrefsFile(String name).getParentFile() to get a reference to the shared_prefs dir
Solution 3:
publicclassPreferencesextendsPreferenceActivity {
publicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// load the XML preferences file
addPreferencesFromResource(R.xml.preferences);
}
}
Then in your main class, you can refer to the preferences
publicclassDrinkingBuddyextendsActivityimplementsOnSharedPreferenceChangeListener {
private int weight;
publicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
// register preference change listener
prefs.registerOnSharedPreferenceChangeListener(this);
// and set remembered preferences
weight = Integer.parseInt((prefs.getString("weightPref", "120");
// etc
}
// handle updates to preferencespublicvoidonSharedPreferenceChanged(SharedPreferences prefs, String key) {
if (key.equals("weightValues")) {
weight = Integer.parseInt((prefs.getString("weightPref", "120");
}
// etc
}
}
The saving of preference updates is handled for you.
(Not too sure about public/private declarations!).
Post a Comment for "Android: How To Get List Of All Preference Xml's For My App And Read Them?"