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. 保存你想保存的東西
    終於又寫了一篇博客,抓緊學習,抓緊進步
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章