SharedPreferences 来实现自动登录的功能(简单的demo)
原理非常简单,用户名和密码记住,然后再次登录的时候去读取。
主要的代码
MainActivity.java
private SharedPreferences sp;
......
private void initData() {
sp = this.getSharedPreferences("userinfo", Context.MODE_PRIVATE);
boolean ischeck = sp.getBoolean("ISCHECK", false);
if (ischeck) {
cbrePsd.setChecked(true);
String name = sp.getString("USERNAME", "");
String psd = sp.getString("USERPSD", "");
etuserName.setText(name);
etuserPsd.setText(psd);
boolean autoischeck = sp.getBoolean("AUTO_ISCHECK", false);
if (autoischeck) {
cbautoLogin.setChecked(true);
Intent intent = new Intent(MainActivity.this,
LogoActivity.class);
startActivity(intent);
}
}
/**登录**/
btnLogin.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
userName = etuserName.getText().toString();
userPsd = etuserPsd.getText().toString();
if (cbrePsd.isChecked()) {
Editor editor = sp.edit();
editor.putString("USERNAME", userName);
editor.putString("USERPSD", userPsd);
editor.commit();
}
Intent intent = new Intent(MainActivity.this , LogoActivity.class);
startActivity(intent);
MainActivity.this.finish();
}
});
/**记住密码**/
cbrePsd.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
if(cbrePsd.isChecked()){
sp.edit().putBoolean("ISCHECK", true).commit();
}else{
sp.edit().putBoolean("ISCHECK", false).commit();
}
}
});
/**自动登录**/
cbautoLogin.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(cbautoLogin.isChecked()){
sp.edit().putBoolean("AUTO_ISCHECK", true).commit();
}else{
sp.edit().putBoolean("AUTO_ISCHECK", false).commit();
}
}
});
}
在LogoActivity.java中读取保存的用户名和密码
private SharedPreferences sp;
......
tvuserName = (TextView) findViewById(R.id.tvusername);
tvuserPsd = (TextView) findViewById(R.id.tvpsd);
sp = this.getSharedPreferences("userinfo", Context.MODE_PRIVATE);
username = sp.getString("USERNAME", "");
userpsd = sp.getString("USERPSD", "");
tvuserName.setText(username);
tvuserPsd.setText(userpsd);
注意:这样会有一个问题,按返回键还是会回到登录的界面,因此要在登录的MainActivity.java中添加
@Override
protected void onDestroy() {
MainActivity.this.finish();
super.onDestroy();
}
@Override
protected void onStop() {
MainActivity.this.finish();
super.onStop();
}
完整的demo下载链接:http://download.csdn.net/detail/carol4312/6629549