2

我的查询很简单,在谷歌上找不到答案:

例如:

存储库 1 -> 用户名 1 -> 密码 1

存储库 2 -> 用户名 2 -> 密码 2

存储库 3 -> 用户名 3 -> 密码 3

如上所述,我有一个包含三个存储库的对话框。当用户自动选择存储库时,会弹出另一个对话框以输入用户名和密码。

因此,我想要实现的是使用单个密钥将存储库名称、用户名和密码保存在共享首选项中。

我知道如何使用单个键和值创建共享首选项对象。我正在寻找的是具有单个键和 3 个值的共享首选项 obj。

真的有可能吗?如果是的话,你可以告诉我一些方向。

4

2 回答 2

0

您不能在同一个SharedPreferences文件中使用单个键存储三个值,至少不能在对象的抽象级别上。SharedPreferences

可以做的是存储 n 个 3 元组的 JSON 表示(我认为这就是您所需要的)。换句话说,存储一个由JSONObject的JSONArray组成的字符串。这样,您就不必关心分隔符、转义和其他此类烦恼。

于 2013-04-08T09:02:44.440 回答
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 "";
        }
    }
于 2013-04-08T09:02:47.067 回答