使用SharedPreferences实现记住密码和自动登录

来源:互联网 发布:网络拓扑结构及配置 编辑:程序博客网 时间:2024/04/29 15:29

今天,来为大家分享一下通过SharedPreferences来实现QQ自动登录与记住密码:

SharedPreferences是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。

接下来为大家粘上代码:

public class MainActivity extends AppCompatActivity {    private Button btLogin;    private EditText etAccount, etPassword;    private CheckBox cbLogSelf, cbRemPsd;    private Intent intent;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        btLogin = (Button) findViewById(R.id.btLogin);        etAccount = (EditText) findViewById(R.id.etAccount);        etPassword = (EditText) findViewById(R.id.etPassword);        cbLogSelf = (CheckBox) findViewById(R.id.cbLogSelf);        cbRemPsd = (CheckBox) findViewById(R.id.cbRemPsd);        //创建一个私有的名为config的文件,可以向里面存储数据        final SharedPreferences sp = getSharedPreferences("config", MODE_PRIVATE);        //定义一个编辑器  可以实现数据的存储与修改        final SharedPreferences.Editor edit = sp.edit();        intent = new Intent(MainActivity.this, FinishActivity.class);        if (sp.getBoolean("isRem", true)) {            cbRemPsd.setChecked(true);            //通过sp在config中得到账号与密码并赋值给输入框上            etAccount.setText(sp.getString("account", ""));            etPassword.setText(sp.getString("password", ""));        }        //自动跳转到下一界面        if (sp.getBoolean("isSelf", true)) {            cbLogSelf.setChecked(true);            startActivity(intent);        }        cbRemPsd.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {            @Override            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {                if (isChecked) {                    Toast.makeText(MainActivity.this, "已勾选", Toast.LENGTH_SHORT).show();                } else {                    Toast.makeText(MainActivity.this, "未勾选", Toast.LENGTH_SHORT).show();                    //记住密码未勾选时,自动登录也不会勾选                    cbLogSelf.setChecked(false);                }            }        });        cbLogSelf.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {            @Override            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {                if (isChecked) {                    /**                     * 实现自动登录与记住密码的关联                     * 当点击自动登录时,记住密码也同时勾选                     */                    cbRemPsd.setChecked(true);                }            }        });        btLogin.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //进行非空判断                String account = etAccount.getText().toString().trim();                String password = etPassword.getText().toString().trim();                if (TextUtils.isEmpty(account) || TextUtils.isEmpty(password)) {                    Toast.makeText(MainActivity.this, "账号与密码都不能为空", Toast.LENGTH_SHORT).show();                } else {                    /**                     * 记住密码                     */                    if (cbRemPsd.isChecked()) {                        edit.putString("account", etAccount.getText().toString());                        edit.putString("password", etPassword.getText().toString());                        edit.putBoolean("isRem", true);                        edit.commit();                    } else {                        edit.putString("account", "");                        edit.putString("password", "");                        edit.putBoolean("isRem", false);                        edit.commit();                    }                    /**                     * 自动登录                     */                    if (cbLogSelf.isChecked()) {                        edit.putBoolean("isSelf", true);                        edit.commit();                    } else {                        edit.putBoolean("isSelf", false);                        edit.commit();                    }                    startActivity(intent);                }            }        });    }}

分享到这里 ,希望能帮到大家。

阅读全文
0 0