Skip to content Skip to sidebar Skip to footer

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?"