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
  • asp之家 软件编程 m.aspxhome.com