Получить все имена SharedPreferences и все их ключи ?

Я делаю резервную копию программы, которая сохранила данные телефона SharedPreferences в файл моей собственной структуры. Но я не знаю, как перечислить их все, что мне нужно:

Например, 2 программы сохранили свои SharedPreferences с именами «Программа A» и «Программа B» . Мне нужно получить массив String, содержащий эти 2 имени. Затем я использую getSharedPreferences с «Программой A», мне нужно получить все ключи, сохраненные программой.

Это действительно возможно?

EDIT1: Я НЕ знаю, какие программы / действия на телефоне. Я хочу получить ВСЕ ключи , которые сохранены в каждой программе. Это похоже на резервное копирование всех данных телефона, но только значений SharedPreferences.

Например: в вашем телефоне 10 программ, каждая из которых создает SharedPreferences с именем Программа 1 - Программа 10 (но, конечно, любое имя, которое они хотят). И я хотел бы получить все эти Программа 1 до Программа 10 Строка. Затем, если Программа 1 имеет 5 ключей, называемых Ключ 1 - Ключ 5 , я хочу получить имена этих ключей.

РЕДАКТИРОВАТЬ2: Согласно ] NikolaMKD , это то, что я делал до сих пор, но в списке отображаются все программы с «Нет предпочтений» вообще, даже в первой, я сохранил SharedPreferences с моей деятельностью:

public class Test extends ListActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        SharedPreferences preferences = getSharedPreferences("Test", 1);
        // No matter what name is: Test or the package name
        Editor editor = preferences.edit();
        editor.putInt("TestKey", 0);
        editor.commit();

        List<ResolveInfo> Temp = 
            getPackageManager().queryIntentActivities(
                    new Intent(Intent.ACTION_MAIN, null)
                    .addCategory(Intent.CATEGORY_LAUNCHER), 0);
        String[] App = new String[Temp.size()];
        for (int i = 0; i < Temp.size(); i++) {
            App[i] = Temp.get(i).activityInfo.name;
            FileReader reader = null;
            try {
                reader = new FileReader("/data/data/"
                        + App[i] + "/shared_prefs/" + App[i] + "_preferences.xml");
            } catch (FileNotFoundException e) {
                reader = null;
            }
            if (reader != null)
                App[i] += " (Have Prefereces)";
            else
                App[i] += " (No Prefereces)";
        }
        setListAdapter(new ArrayAdapter<String>(this, R.layout.main, App));
    }



}
7
задан Nikola Despotoski 5 January 2015 в 07:27
поделиться