我有一项活动,我希望从共享偏好中获取价值和名称,并将其存储在SQLite数据库中。实际上我正在尝试将应用程序数据备份到data.db
文件中。我知道我们也可以使用sp.getAll();
,但这不适用于我的情况。我希望逐个获取带有名称和值的sharedpreference存储值,以便我可以将它们存储在db文件中。任何方式来做到这一点。
我需要备份我的应用程序。 settings.xml文件,以便以后可以恢复。
答案 0 :(得分:0)
将所有内容放入Map中,然后遍历它:
Map<String,?> keys = prefs.getAll();
for(Map.Entry<String,?> item : keys.entrySet()){
Log.d("Key: ", item.getKey() +
", Value: " + item.getValue().toString());
}
答案 1 :(得分:-1)
我创建了一个公共课&#34;偏好&#34;放入&#34;存储&#34;将我的存储数据打包为SqliteHelper,表名等(名称不导入,但这可以使您的项目更有条理)。
进入类首选项,您需要创建首选项名称键和访问它的所有方法(修改,删除,获取)
所以您的&#34; Preferences类可以如上所示:
const tap = f => x => (f(x), x);
const log = prefix => x => console.log(prefix, x);
const activateAUser = user => {
const newUser = Object.assign({}, user, {active: true});
return newUser;
}
tap(log("user activated")) (activateAUser({active: false, name: 'John'}));
之后,您可以按照
访问您的偏好设置public class Preferences {
public static String PREPFERENCES = "com.packagename.appname";
private static String PREFERENCES_KEY = "KEY";
public static String getData(Context context) {
return context.getSharedPreferences(PREPFERENCES, Context.MODE_PRIVATE).getString(PREFERENCES_KEY, "");
}
public static void setData(Context context, String data) {
context.getSharedPreferences(PREPFERENCES, Context.MODE_PRIVATE).edit().putString(PREFERENCES_KEY, data).apply();
}
public static void deleteAll(Context context) {
context.getSharedPreferences(PREPFERENCES, Context.MODE_PRIVATE).edit().remove(PREFERENCES_KEY).apply();
}
将数据保存为
Preferences.getData(context); //return a string
我希望我能提供帮助,问候。