繁体   English   中英

如何从 Android 的 SharedPreferences 获取用户名和密码?

[英]How can I get username and password from SharedPreferences in Android?

我正在尝试恢复用户名和密码以便能够启动 session。这些是 sharedPreferences 的用户。

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <string name="admin">1234</string>
    <string name="user">user0987</string>
</map>

这是方法

login.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        SharedPreferences sp1 = MainActivity.this.getSharedPreferences("data", Context.MODE_PRIVATE);
        String user = sp1.getString(userInput.getText().toString(), "User not found");
        String pass = sp1.getString(passwordInput.getText().toString(), "Password is not correct");
        
        if(user.equals(userInput.getText().toString()){
            Toast.makeText(MainActivity.this, "User Exists", Toast.LENGTH_SHORT).show();
        } else{
            Toast.makeText(MainActivity.this, "User not found", Toast.LENGTH_SHORT).show();
        }

    }
});

这是将数据放入 SharedPreferences 的代码

register.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
       
        String user = userInput.getText().toString();
        String pass = passwordInput.getText().toString();

        if(user.isEmpty()){
            error.show();
        } else if (pass.isEmpty()){
            error2.show();
        } else{
            SharedPreferences sp=getSharedPreferences("data", Context.MODE_PRIVATE);
            SharedPreferences.Editor Ed=sp.edit();
            Ed.putString(user,pass);
            Ed.commit();
            Toast.makeText(MainActivity.this, "Register completed", Toast.LENGTH_SHORT).show();
        }

    }
});

您需要在SharedPreferences编辑器中添加用于保存数据的键。

目前您使用输入的用户名作为密钥,它可以根据编辑文本中输入的数据进行更改,因为用户不会每次都输入相同的用户名,但是为了向/从SharedPreferences保存和获取数据,我们需要一个特定的密钥。

您可以添加用于保存用户名和密码的密钥,如以下代码:

 SharedPreferences sp=getSharedPreferences("data", Context.MODE_PRIVATE);
 SharedPreferences.Editor ed=sp.edit();
 ed.putString("user",user);
 ed.putString("pass",pass);
 ed.commit();

用于获取数据

SharedPreferences sp1 = getSharedPreferences("data", Context.MODE_PRIVATE);
String userName = sp1.getString("user", "User not found");
String password = sp1.getString("pass", "Password is not correct");

有关 Sharedpref 的更多信息,请查看使用 SharedPreferences 保存键值数据的官方文档

当您从 SP 检索数据时,请尝试使用下一个代码:

SharedPreferences sp1 = MainActivity.this.getSharedPreferences("data", Context.MODE_PRIVATE);
String pass = sp1.getString(userInput.getText().toString(), null);
if (pass != null) {
    Toast.makeText(MainActivity.this, "User Exists", Toast.LENGTH_SHORT).show();
} else{
    Toast.makeText(MainActivity.this, "User not found", Toast.LENGTH_SHORT).show();
}

您以“用户:密码”的形式保存数据,因此您需要以相同的方式获取它,使用用户名作为密钥。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM