在Android多用户应用中存储设置

时间:2013-12-09 09:10:41

标签: android sharedpreferences

在多用户的Android应用中存储用户设置的最佳方式是什么?

现在我正在使用

SharedPreferences sharedPref = PreferenceManager
 .getDefaultSharedPreferences(getActivity().getBaseContext());
String uid = sharedPref.getString("prompt-on-close", "N/A");

我认为这对我不起作用,因为这意味着,所有用户都会共享相同的设置(如果用户注销并且值中的其他符号保持不变)。

我发现了另一种选择:

SharedPreferences sharedPref = getActivity().getSharedPreferences("user1", Context.MODE_PRIVATE);

我仍然不确定这是否是可以解决的问题,更重要的是,如果标准的Prefrences对话框可以使用它。我认为它只使用默认设置。

2 个答案:

答案 0 :(得分:0)

你认为方向正确,在我看来,最好的方法是遵循以下步骤==>

初​​始化

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); // 0 - for private mode
Editor editor = pref.edit();

存储数据

// returns stored preference value
// If value is not present return second param value - In this case null
pref.getString("key_name", null); // getting String
pref.getInt("key_name", null); // getting Integer
pref.getFloat("key_name", null); // getting Float
pref.getLong("key_name", null); // getting Long
pref.getBoolean("key_name", null); // getting boolean

清除/删除数据 如果要从共享首选项中删除,可以调用remove(“key_name”)来删除该特定值。如果要删除所有数据,请调用clear()

editor.remove("name"); // will delete key name
editor.remove("email"); // will delete key email

editor.commit(); // commit changes

以下将清除共享偏好中的所有数据

editor.clear();
editor.commit(); // commit changes

编辑==>

Editor e = this.getPreferences(Context.MODE_PRIVATE).edit();
e.putString("password", mPassword);
e.commit();

答案 1 :(得分:0)

您可以使用SQLlite解决此问题,您可以在用户帐户创建时为每个用户创建行并随时更新数据,我通常在需要存储大量的首选项时使用此方法用户应用程序 这个问题在这里解决了关于PreferenceActivity Is it Possible to Use PreferenceActivity with SQLite instead of res/xml?

的评论中的疑问
相关问题