通过资料得知,可以通过三种方式实现,其中,数据库个人认为比较好实现,添加个字段即可,但觉得不太正规,同时,还得对表结构进行修改,所以,舍弃这种方法。通过SharedPreferences实现记住密码以及自动登录的实现主要依赖于SharedPreferences类的使用,SharedPreferences是一个轻量级的存储类,用于存储一些小数据,比如登录账号密码以及状态信息等。
一:准备条件
复选框:记住密码和自动登录使用复选框来实现,并设置了全局变量接收当前记住密码以及自动登录的状态
//复选框
private CheckBox mRemenber;//记住密码
private boolean mPasswordFlag = false;//记住密码标志
private CheckBox mAutoLogin;//自动登录
private boolean mAutoLoginFlag = false;//自动登录标志
二:实现原理
通过oncreate来调用shareprefence里的数据,来判断记住密码,自动登录的字段是否为真,真则进行一个操作,假则进行一个操作。
SharedPreferences sharedPreferences = getSharedPreferences("App", MODE_PRIVATE);
//储存的地方
//取值判空
if (sharedPreferences != null) {
UserName = sharedPreferences.getString("username", "");
Password = sharedPreferences.getString("password", "");
mPasswordFlag = sharedPreferences.getBoolean("remenber", false);
mAutoLoginFlag = sharedPreferences.getBoolean("auto", false);
UserNameEdit.setText(UserName);
}
//记住密码
if (mPasswordFlag) {
mRemenber.setChecked(true);
PasswordEdit.setText(Password);
//显示
}
//自动登录
if (mAutoLoginFlag){
mAutoLogin.setChecked(true);
String username = UserNameEdit.getText().toString();
String password = PasswordEdit.getText().toString();
login(username,password);//进行操作
}
//进行修改复选框
mRemenber.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//记住密码
//如果将记住密码取消,取消记住密码、自动登录
if (!isChecked){
mAutoLogin.setChecked(false);
//清空密码输入框
PasswordEdit.setText("");
}
}
});
三:初始化,在第一登录时候进行
LoginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
UserName = UserNameEdit.getText().toString();
Password = PasswordEdit.getText().toString();
//
//1 创建 SharePreferences 对象
SharedPreferences sharedPreferences = getSharedPreferences("App", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
//2 创建Editor对象,写入值
editor.putString("username", UserName);
if (mRemenber.isChecked()) {
if(!mPasswordFlag){
Password = Password;
mPasswordFlag = true;
}
editor.putBoolean("remenber", mPasswordFlag);
editor.putString("password", Password);
//选中自动登录
if (mAutoLogin.isChecked()){
mAutoLoginFlag = true;
}else{
mAutoLoginFlag = false;
}
editor.putBoolean("auto", mAutoLoginFlag);
} else {
if(!mPasswordFlag){
Password = Password;
}
//取消自动登录和记住密码,清空密码
mPasswordFlag = false;
mAutoLoginFlag = false;
editor.putString("password", "");
editor.putBoolean("remenber", mPasswordFlag);
editor.putBoolean("auto", mAutoLoginFlag);
}
//3 提交
editor.commit();
login(UserName,Password);//登录方法
}
});
四:最终界面:
五:参考来源博客
(40条消息) Android登录记住密码以及自动登录的实现_没事瞎琢磨的程序猿的博客-CSDN博客
标签:登录,mPasswordFlag,密码,editor,android,Password,记住 From: https://www.cnblogs.com/wudisanrenzu/p/17403416.html