Android:利用SharedPreferences实现自动登录
作者:tinyphp 时间:2023-05-24 07:53:33
本文介绍了Android:利用SharedPreferences实现自动登录,具体如下:
主要代码:
public class LoginActivity extends Activity {
private EditText username;
private EditText userpassword;
private CheckBox remember;
private CheckBox autologin;
private Button login;
private SharedPreferences sp;
private String userNameValue,passwordValue;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
// 初始化用户名、密码、记住密码、自动登录、登录按钮
username = (EditText) findViewById(R.id.username);
userpassword = (EditText) findViewById(R.id.userpassword);
remember = (CheckBox) findViewById(R.id.remember);
autologin = (CheckBox) findViewById(R.id.autologin);
login = (Button) findViewById(R.id.login);
sp = getSharedPreferences("userInfo", 0);
String name=sp.getString("USER_NAME", "");
String pass =sp.getString("PASSWORD", "");
boolean choseRemember =sp.getBoolean("remember", false);
boolean choseAutoLogin =sp.getBoolean("autologin", false);
// Toast.makeText(this, name, Toast.LENGTH_SHORT).show();
//如果上次选了记住密码,那进入登录页面也自动勾选记住密码,并填上用户名和密码
if(choseRemember){
username.setText(name);
userpassword.setText(pass);
remember.setChecked(true);
}
//如果上次登录选了自动登录,那进入登录页面也自动勾选自动登录
if(choseAutoLogin){
autologin.setChecked(true);
}
login.setOnClickListener(new OnClickListener() {
// 默认可登录帐号tinyphp,密码123
@Override
public void onClick(View arg0) {
userNameValue = username.getText().toString();
passwordValue = userpassword.getText().toString();
SharedPreferences.Editor editor =sp.edit();
// TODO Auto-generated method stub
if (userNameValue.equals("tinyphp")
&& passwordValue.equals("123")) {
Toast.makeText(LoginActivity.this, "登录成功",
Toast.LENGTH_SHORT).show();
//保存用户名和密码
editor.putString("USER_NAME", userNameValue);
editor.putString("PASSWORD", passwordValue);
//是否记住密码
if(remember.isChecked()){
editor.putBoolean("remember", true);
}else{
editor.putBoolean("remember", false);
}
//是否自动登录
if(autologin.isChecked()){
editor.putBoolean("autologin", true);
}else{
editor.putBoolean("autologin", false);
}
editor.commit();
//跳转
Intent intent =new Intent(LoginActivity.this,SuccessActivity.class);
startActivity(intent);
} else {
Toast.makeText(LoginActivity.this, "用户名或密码错误,请重新登录!",
Toast.LENGTH_SHORT).show();
}
}
});
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="10dp" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户名:" />
<EditText
android:id="@+id/username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName" >
</EditText>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="密码:" />
<EditText
android:id="@+id/userpassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPassword" >
</EditText>
<CheckBox
android:id="@+id/remember"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="记住密码" />
<CheckBox
android:id="@+id/autologin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="自动登录" />
<Button
android:id="@+id/login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="登录" />
</LinearLayout>
源码下载:源码
来源:http://www.cnblogs.com/tinyphp/p/3998444.html
标签:android,自动登录
0
投稿
猜你喜欢
C#使用后台线程BackgroundWorker处理任务的总结
2023-12-08 10:28:19
使用Feign调用注解组件(实现字段赋值功能)
2023-01-06 15:19:59
Android开发之ProgressBar字体随着进度条的加载而滚动
2023-12-28 03:06:53
高吞吐、线程安全的LRU缓存详解
2021-10-01 01:40:28
JavaBean和Map转换封装类的方法
2023-04-18 06:50:52
c++中vector<int>和vector<int*>的用法及区别
2023-03-28 02:29:37
java中的类为什么只能用public修饰?
2023-10-09 20:23:54
Android View事件机制 21问21答
2022-10-14 04:27:10
C#获取指定年份第一个星期一具体日期的方法
2023-03-06 19:18:18
shiro之记住登录信息
2023-03-06 18:39:13
通过实例解析java过滤器和拦截器的区别
2022-12-21 05:02:45
C#的TimeSpan案例详解
2023-11-20 11:34:52
如何在C#中使用指针
2022-07-02 16:09:47
详解Kotlin:forEach也能break和continue
2022-05-03 01:24:10
Android编程实现仿美团或淘宝的多级分类菜单效果示例【附demo源码下载】
2022-09-09 01:38:50
双重检查锁定模式Java中的陷阱案例
2023-11-13 22:11:02
Unity3d使用FairyGUI 自定义字体的操作
2022-05-29 16:57:27
深入了解Spring中最常用的11个扩展点
2023-07-05 17:46:40
C#图像处理之木刻效果实现方法
2022-05-20 04:28:13
Spring Cloud Gateway 服务网关快速实现解析
2023-12-19 04:28:33