在android中使用sharedpreference进行多次登录

时间:2016-03-31 07:26:58

标签: android

我正在研究android中的共享首选项。 我已经创建了单用户登录页面,并且我的登录详细信息已正确保存。 登录页面代码是

`public class Login extends AppCompatActivity {
    private static final int register = Menu.FIRST;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);

        String pref = "mypref";

        SharedPreferences sharedPreferences = getSharedPreferences(pref, MODE_PRIVATE);
        final SharedPreferences.Editor editor = sharedPreferences.edit();

        Button loginbtn = (Button) findViewById(R.id.login);
        final EditText editText3 = (EditText) findViewById(R.id.editText3);
        final EditText editText4 = (EditText) findViewById(R.id.editText4);

        editText3.setText(sharedPreferences.getString("name",""));
        editText4.setText(sharedPreferences.getString("password", ""));

        loginbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent lg = new Intent(Login.this, Main.class);
                startActivity(lg);
            }
        });
    }



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        menu.add(0, register, 0, "Register");
        return true;
    }



    @Override
    public boolean onOptionsItemSelected(MenuItem item) {



        switch (item.getItemId()) {
            case register:

                Intent lg = new Intent(Login.this, Register.class);
                startActivity(lg);

                return true;
            case R.id.register:


                return true;

            default:
                return super.onOptionsItemSelected(item);
        }
    }

}`

现在我想在登录页面上通过共享首选项保存多个用户。任何人都可以建议一些代码吗?

2 个答案:

答案 0 :(得分:0)

在SharedPreference中存储(在注册期间)时,使用用户输入的用户名作为他输入的密钥和密码作为值。然后在登录时使用用户名&密码并检查是否存在这样的条目。

希望你得到我的意思。如果您需要澄清,请告诉我

编辑:

存储用户名和密码时,请执行以下操作

 sharedPref.put(username, pwd); //username & pwd are user entered
                               //values during sign up

登录以检查凭据是否正确时,请执行以下操作

if(pwd.equals(sharedPref.get(username)) return true;
else return false;

答案 1 :(得分:0)

首先,你可以创建一个JSON结构:

{
"users":[
{
"name":"name1"
,"password":"pass1"
}
{
"name":"name2"
,"password":"pass2"
}
]
}

然后您可以填充此结构中的数据:

JSONArray mArrayUser = new JSONArray();
JSONObject user = new JSONObject();
user.put("name", "name1");
user.put("passwords", "pass1");

mArrayUser.put(user);

user = new JSONObject();
user.put("name", "name2");
user.put("passwords", "pass2");

mArrayUser.put(user);


JSONObject jObject = new JSONObject();
jObject.put("users",myArray);

现在您可以在字符串中转换此JSONObject并将其保存在sharedpreferences中:

String sharedPrefData = jObject.toString();

editor.putString("YOUR_DB", sharedPrefData);

当您需要数据时,可以从sharedpreferences获取数据并将其转换为JSONObject:

JSONObject jObj = new JSONObject(sharedPreferences.getString("YOUR_DB",""));

通过JSONArray得到每一行:

JSONArray jArray= jObj.getJSONArray("users");


    for(int i=0;i<jArray.length();i++){

        String name = jArray.getJSONObject(i).getString("name");
        String password = jArray.getJSONObject(i).getString("password");
        //DO WHAT YOU WANT WITH THE DATA

    }