Android:如何逐个获取SharedPreference值

时间:2017-03-02 15:10:48

标签: android database

我有一项活动,我希望从共享偏好中获取价值和名称,并将其存储在SQLite数据库中。实际上我正在尝试将应用程序数据备份到data.db文件中。我知道我们也可以使用sp.getAll();,但这不适用于我的情况。我希望逐个获取带有名称和值的sharedpreference存储值,以便我可以将它们存储在db文件中。任何方式来做到这一点。

我需要备份我的应用程序。 settings.xml文件,以便以后可以恢复。

2 个答案:

答案 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


我希望我能提供帮助,问候。