Я делаю резервную копию программы, которая сохранила данные телефона 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));
}
}