0


Android studio自动登录和记住密码的实现

Android studio自动登录和记住密码的实现


文章目录


前言

大家好,我是oy,今天介绍一下在登录页面中如何实现自动登录及记住密码。


一、效果

在这里插入图片描述

二、设计思路

  1. 使用sharedPreferenced存储用户账号和密码,以及是否记住密码和自动登录。
  2. 记住密码和自动登录按钮都采用checkButton,使用checkButton的OnCheckedChangeListener监听。

三、知识点介绍

1. SharedPreferenced

  1. sharedPreferenced是Android中存储数据的一种方式。采用键值对的方式存储数据。
  2. 使用过程: ① 获取sharedPreferenced对象。 ② 调用edit()获取SharePreferenced.Editor对象。 ③ 调用putBoolean()…等向SharePreferenced.Editor对象添加数据。 ④ 调用apply()提交数据。
  3. 例子// 存数据SharedPreferences sp =getSharedPrefrences("data",MODE_PRIVATE);// 获取sharedPreferenced对象SharedPreferences.Editor ed = sp.edit();// 获取SharePreferenced.Editor对象ed.putString("name","Sam");// 向SharePreferenced.Editor对象添加数据ed.apply();// 调用apply()提交数据,就是保存的意思// 取数据SharedPrefrences sp =getSharedPrefrences("data",MODE_PRIVATE);String name = sp.getString("name","");// 取数据

2. checkButton就不介绍了

四、自动登录及记住密码实现

  1. 分为两个activity,mainActivity是登录页面,homeActivity是登录成功页面。 HomeActivity.java代码publicclassHomeActivityextendsAppCompatActivity{@OverrideprotectedvoidonCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_home);}}activity_home.xml代码<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".HomeActivity"><TextViewandroid:id="@+id/tv_text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/text"android:textSize="26sp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"/></androidx.constraintlayout.widget.ConstraintLayout>MainActivity.java代码privateAppCompatEditText edit_account, edit_password;privateCheckBox cb_remember, cb_autologin;privateSharedPreferences sharedPreferences;@OverrideprotectedvoidonCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);bindView();initView();}/** *用于绑定控件id的方法 */protectedvoidbindView(){ edit_account =findViewById(R.id.edit_account); edit_password =findViewById(R.id.edit_password); cb_remember =findViewById(R.id.cb_remember); cb_remember.setOnCheckedChangeListener(this); cb_autologin =findViewById(R.id.cb_autologin); cb_autologin.setOnCheckedChangeListener(this);Button btn_login =findViewById(R.id.btn_login); btn_login.setOnClickListener(this);// 获取SharedPreferences的实例 sharedPreferences =this.getSharedPreferences("loginInfo",MODE_PRIVATE);}/** * 用于初始化界面 */protectedvoidinitView(){// 获取sharedPreferences中remember对于的boolean值,true表示记住密码if(sharedPreferences.getBoolean("remember",false)){ cb_remember.setChecked(true); edit_account.setText(sharedPreferences.getString("account","")); edit_password.setText(sharedPreferences.getString("password",""));autologin();}}// 登录按钮的逻辑@OverridepublicvoidonClick(View view){// 定义账号和密码的字符串String account, password;// 判断账号是否为空if(edit_account.getText()==null){showToast("账号为空,请重新输入");return;}// 判断密码是否为空if(edit_password.getText()==null){showToast("密码为空,请重新输入");return;}// 账号和密码都不为空,进行密码账号校验 account = edit_account.getText().toString().trim(); password = edit_password.getText().toString().trim();// 此处固定了账号和密码if(account.equals("admin")&& password.equals("12345")){if(cb_remember.isChecked()){SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString("account", account); editor.putString("password", password); editor.apply();}showToast("登录成功");Intent intent =newIntent(MainActivity.this,HomeActivity.class);// 跳转到主界面startActivity(intent);// finish();}}/** * 自动登录逻辑 */privatevoidautologin(){// 获取sharedPreferences中autologin对于的boolean值, true表示记住密码if(sharedPreferences.getBoolean("autologin",false)){// 勾选自动登录 cb_autologin.setChecked(true);// 跳转页面Intent intent =newIntent(MainActivity.this,HomeActivity.class);// 跳转到主界面startActivity(intent);}}/** * 用于显示toast弹出消息 * @param text 需要显示的文本 */privatevoidshowToast(finalString text){Toast.makeText(MainActivity.this, text,Toast.LENGTH_SHORT).show();}// checkButton按钮的选中监听事件,compoundButton指的是checkButton控件, isChecked指的是是否勾选@SuppressLint("NonConstantResourceId")@OverridepublicvoidonCheckedChanged(CompoundButton compoundButton,boolean isChecked){switch(compoundButton.getId()){caseR.id.cb_remember:if(isChecked){ sharedPreferences.edit().putBoolean("remember",true).apply();}else{ sharedPreferences.edit().putBoolean("remember",false).apply();}break;caseR.id.cb_autologin:if(isChecked){ sharedPreferences.edit().putBoolean("autologin",true).apply();}else{ sharedPreferences.edit().putBoolean("autologin",false).apply();}break;}}sharedPreferenced存储是位于data/data/包名/shared_prefs下。是xml文件存储键值对。 比如<?xml version='1.0' encoding='utf-8' standalone='yes' ?><map><booleanname="remember"value="true"/><booleanname="autologin"value="true"/><stringname="password">12345</string><stringname="account">admin</string></map>

总结与补充

主要介绍了在登录页面中如何实现自动登录和记住密码的功能,简单介绍了sharedPreferences的使用方法,这也是Android中存储数据常用的方法之一。Android存储还有sqlite数据库存储,在另一篇文章 " Android studio登录注册的实现及介绍 " 中有讲到。


本文转载自: https://blog.csdn.net/m0_49534667/article/details/128607535
版权归原作者 勤奋的oyoung 所有, 如有侵权,请联系我们删除。

“Android studio自动登录和记住密码的实现”的评论:

还没有评论