Android 的多账号登陆

最近因为工作上的原因做了一个多账号登陆,很简单的东西做的并不是很好,所以就需要把这个东西重新捋一下,重新学习一下。
具体就是跟QQ的的多账号登陆差不多,我的基本思路其实就是用sharedpreference,当然数据库是肯定可以的。

直接说思路,因为是多个账号,肯定需要一个数组或者集合来盛放,而且因为是要保存账号和集合两个东西,就需要map

private SharedPreferences sPreferences;
private Map<String, String> map;

读取账号和密码

// 读取已经记住的用户名与密码
        sPreferences = getSharedPreferences("session", MODE_PRIVATE);
        map = (Map<String, String>) sPreferences.getAll();
        List<String> list = new ArrayList<String>();

        for (int i = 0; i < (map.size() / 2); i++) {
            String name = sPreferences.getString("name" + i, "");
            list.add(name);
        }

然后读取账号密码就该保存下来了

private void saveUser() {
        // 若是第二次打开软件时,将map在size赋给i,若是不是,则i只要实现i++
        if (i == 0) {
            i = map.size() / 2;
        }
        String name = etUserName.getText().toString().trim();
        String pwd = etPassword.getText().toString().trim();
        // 迭代器遍历map
        Set<Entry<String, String>> entryset = map.entrySet();
        Iterator iter = entryset.iterator();
        while (iter.hasNext()) {
            //迭代查询为false就是证明没有保存过用户map为空
            if (iter.hasNext()) {
                Entry<String, String> entry = (Entry<String, String>) iter.next();
                if (entry.toString().contains(name)) {
                    isSave = false;
                    break;
                } else {
                    isSave = true;
                }
            }

        }
        if (isSave.equals(true)) {
            if (!"".equals(name) && !"".equals(pwd)) {
                sPreferences.edit().putString("name" + i, name)
                        .putString("pwd" + i, pwd).commit();
                i++;
            }
        }

    }

这里有个关于是否会重复保存多个想通账号的问题,在里面迭代的时候会处理这个问题,总结下来就是三步

  1. 创建一个sharedpreference来保存你想保存的东西
  2. 读取你要保存的东西
  3. 保存你想保存的东西
    终于又写了一篇博客,抓紧学习,抓紧进步
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章