我的查询很直接,无法在谷歌找到答案:
例如:
存储库1 - > USERNAME1 - >密码1
存储库2 - > USERNAME2 - >密码2
存储库3 - > USERNAME3 - > password3
如上所述,我有一个包含三个存储库的对话框。当用户自动选择存储库时,会弹出另一个对话框以输入用户名和密码。
因此,我想要实现的是使用单个密钥在共享首选项中保存存储库名称,用户名和密码。
我知道如何使用单个键和值创建共享的pref对象。我正在寻找的是一个共享的pref obj,只有一个键和3个值。
真的有可能吗?如果是的话,你可以告诉我一些方向。
答案 0 :(得分:0)
您不能在同一SharedPreferences文件中使用单个密钥存储三个值,至少不能在SharedPreferences
对象的抽象级别上存储。
你可以做的是存储n个3元组的JSON表示(我认为这就是你需要的)。换句话说,存储一个由JSONArray JSONObject s组成的字符串。这样,您无需关心分隔符,转义和其他此类烦恼。
答案 1 :(得分:0)
SharedPreferences prefs = getSharedPreferences(getPathForUser(username, password) + PREF_RESOURCES_NAME, MODE_PRIVATE);
public static String getPathForUser(String username, String password) {
String sUsername = null;
String sPassword = null;
// sUsername
if (username != null && username.trim().length() > 0) {
sUsername = username.trim();
} else {
sUsername = "defaultUsername";
}
// sPassword
if (password != null && password.trim().length() > 0) {
sPassword = password.trim();
} else {
sPassword = "defaultPassword";
}
try {
return URLEncoder.encode(sUsername, "UTF-8") + "__" + URLEncoder.encode(sPassword, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return "";
}
}