gpt4 book ai didi

android - 获取所有 SharedPreferences 名称及​​其所有 key ?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:12:13 25 4
gpt4 key购买 nike

我正在制作备份程序,将手机 SharedPreferences 数据保存到我自己结构的文件中。但我不知道如何列出所有这些,我需要:

例如,2 个程序用名称 “程序 A”“程序 B” 保存了它们的 SharedPreferences。我需要获取包含这两个名称的字符串数组。然后,我将 getSharedPreferences 与“程序 A”一起使用,我需要获取该程序保存的所有 key 。

真的可以吗?

EDIT1:我不知道手机上有什么程序/Activity 。我想获取每个程序保存的所有 keys。就像您备份所有手机数据一样,但仅备份 SharedPreferences 值。

例如:您的手机有 10 个程序,每个程序都创建一个名为 Program 1Program 10 的 SharedPreferences(当然,他们想要什么名字都行)。我想获得所有这些 Program 1Program 10 字符串。然后,如果 Program 1 有 5 个键,分别称为 Key 1Key 5,我想获取这些键的名称。

EDIT2:根据 NikolaMKD 指南,这是我到目前为止所做的,但列表返回所有程序,所有行都带有“No Preferences”,即使在第一行,我也保存了SharedPreferences 与我的 Activity :

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));
}



}

最佳答案

从中获取所有的_preferences.xml

/data/data/(package)/shared_prefs/(package)_preferences.xml

解析 XML,在 XML 中每个键都有名称。我可能误解了你的问题

关于android - 获取所有 SharedPreferences 名称及​​其所有 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6672949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com