移动技术开发:保存密码和自动登录

embedded/2024/10/17 22:03:18/

1 实验名称

       保存密码和自动登录

2 实验目的

       掌握利用SharedPreference实现记住密码和自动登录功能。

3 实验源代码

布局文件代码:

(1)activity_main.xml

java"><?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns: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:id="@+id/main"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TableRow><TextViewandroid:text="账号"android:layout_marginRight="10dp"android:textSize="18sp"/><EditTextandroid:id="@+id/userNameET"android:hint="请输入账号"/></TableRow><TableRow><TextViewandroid:text="密码"android:layout_marginRight="10dp"android:textSize="18sp"/><EditTextandroid:id="@+id/passWordET"android:hint="请输入密码"/></TableRow><TableRow><CheckBoxandroid:id="@+id/savePwdCB"android:text="记住密码"/><CheckBoxandroid:id="@+id/autoLoginCB"android:text="自动登录"/><Buttonandroid:id="@+id/loginBtn"android:text="登录"/></TableRow></TableLayout>

(2)activity_login_success.xml

java"><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns: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:id="@+id/main"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".LoginSuccessActivity"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="登录成功"/></LinearLayout>

Java代码:

(1)MainActivity

java">package com.example.savelogininfotest;import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;public class MainActivity extends AppCompatActivity {private EditText userNameET = null;private EditText passWordET = null;private CheckBox savePwdCB = null;private CheckBox autoLoginCB = null;private Button loginBtn = null;private String userName = null;private String userPwd= null;private SharedPreferences loginPreferences = null;private SharedPreferences.Editor loginEditor = null;private boolean isSavePwd = false;//用户是否选中记住密码的标志变量private boolean isAutoLogin = false;//用户是否选中自动登录的标志变量@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);userNameET = findViewById(R.id.userNameET);passWordET = findViewById(R.id.passWordET);savePwdCB = findViewById(R.id.savePwdCB);autoLoginCB = findViewById(R.id.autoLoginCB);loginBtn = findViewById(R.id.loginBtn);loginBtn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//创建存取用户名和密码以及是否记住密码和是否自动登录的标志变量的编辑器loginEditor = loginPreferences.edit();userName = userNameET.getText().toString().trim();//获取用户输入的用户名userPwd = passWordET.getText().toString().trim();//获取用户输入的密码//编辑器将用户名和密码以键值对的方式封装loginEditor.putString("userName",userName);loginEditor.putString("userPwd",userPwd);//编辑器将是否记住密码和是否自动登录的值以键值对的方式封装loginEditor.putBoolean("isSavePwd",savePwdCB.isChecked());loginEditor.putBoolean("isAutoLogin",autoLoginCB.isChecked());loginEditor.commit();//将前面的四个键值对提交存放到本地文件中welcomeLoad();//调用跳转到登录成功页面的方法}});loginPreferences = getSharedPreferences("login", Context.MODE_PRIVATE);isSavePwd = loginPreferences.getBoolean("isSavePwd",false);isAutoLogin = loginPreferences.getBoolean("isAutoLogin",false);userName = loginPreferences.getString("userName",null);userPwd = loginPreferences.getString("userPwd",null);if (isAutoLogin){//判断用户上次是否选中了“自动登录”welcomeLoad();}else {loadLogin();}}//定义跳转到登录成功页面的方法private void welcomeLoad(){//跳转到“登录成功”Intent intent = new Intent(MainActivity.this, LoginSuccessActivity.class);startActivity(intent);}//定义登录方法private void loadLogin(){if (isSavePwd){//判断用户上次是否选中了“记住密码”userNameET.setText(userName);//将用户名填充到输入文本框passWordET.setText(userPwd);//将密码填充到输入文本框savePwdCB.setChecked(true);//将“记住密码”选择框勾选住}//为“自动登录”选择框添加事件监听autoLoginCB.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {if (isChecked){//如果勾选了“自动登录”savePwdCB.setChecked(true);//将“记住密码”选择框勾选住}}});}
}

(2)LoginSuccessActivity

java">package com.example.savelogininfotest;import android.os.Bundle;import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;public class LoginSuccessActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_login_success);}
}

4 实验运行结果图

5 实验总结

       同之前一样,先写布局文件,有两个布局文件,第一个布局文件是自动登录和记住密码的界面,输入账号和密码,选择记住密码、自动登录;第二个布局文件是登录后的界面,显示登录成功。

       写完布局文件,开始写Java代码。定义两个方法,一个是跳转到登录成功页面的方法,另一个是登录方法;创建存取用户名和密码以及是否记住密码和是否自动登录的标志变量的编辑器,编辑器将用户名和密码以及是否记住密码和是否自动登录以键值对的方式封装,并将这四个键值对提交存放到本地文件中;关于自动登录还有一个,那就是判断上次登录是否选择自动登录,如果没有选择,就显示登录界面,如果上次登录时选择了自动登录,那么新一次登录时将自动跳转到登录成功的界面;关于记住密码,如果用户上次选择了记住密码,呐用户名和密码将填充到文本输入框。


http://www.ppmy.cn/embedded/126893.html

相关文章

C语言[函数递归——求n(感叹号)]

用递归方法求n! 递归公式可表达为:n ! n *&#xff08;n–1&#xff09;! 使用递推的方法&#xff0c;从一开始递推直到n。 #include <stdio.h> int main() { int a; int b; printf("enter one interger number:"); scanf("%d",&am…

R语言机器学习算法实战系列(三)lightGBM算法(Light Gradient Boosting Machine)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍原理:应用方向:教程下载数据加载R包导入数据数据预处理数据描述数据切割设置数据对象调节参数训练模型预测测试数据评估模型模型准确性混淆矩阵模型评估指标ROC CurvePRC Curve特…

Elastic Stack--16--ES三种分页策略

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 方式一&#xff1a;from size实现原理使用方式优缺点 方式二&#xff1a;scroll实现原理使用方式优缺点 方式三&#xff1a;search_after实现原理使用方式优缺点 三…

Python 在Excel中添加数据条

在Excel中添加数据条是一种数据可视化技巧&#xff0c;它通过条形图的形式在单元格内直观展示数值的大小&#xff0c;尤其适合比较同一列或行中各个单元格的数值。这种表示方式可以让大量的数字信息一目了然。本文将介绍如何使用Python在Excel中的指定单元格区域添加数据条。 …

第一章 初识Spring

目录 一、介绍 1.1. Spring能做什么&#xff1f; 1.2. Spring生态 二、Spring发展历程 三、Spring主要功能特性 四、学习Spring的方法 Spring官网地址&#xff1a; Spring | Home 一、介绍 Spring是一个开源的‌Java应用程序开发框架&#xff0c;旨在简化企业级应用的开…

怎么把音频的速度调慢?6个方法调节音频速度

怎么把音频的速度调慢&#xff1f;调慢音频速度不仅可以帮助我们更好地捕捉细节&#xff0c;还能让我们在分析和学习时更加从容。这对于音乐爱好者来说&#xff0c;尤其有助于理解复杂的旋律和和声&#xff0c;使学习过程变得更加高效。而在语言学习中&#xff0c;放慢语速则能…

python实现ppt转pdf

要实现将PPT文件转换为PDF文件&#xff0c;可以使用Python中的python-pptx库来读取PPT文件&#xff0c;并使用reportlab库来生成PDF。又或者&#xff0c;你也可以使用其他库如pypdf和pypptx等进行处理。 以下是一个使用unoconv工具以及Python的示例&#xff0c;可以将PPT转换为…

Python OpenCV精讲系列 - 三维重建深入理解(十七)

&#x1f496;&#x1f496;⚡️⚡️专栏&#xff1a;Python OpenCV精讲⚡️⚡️&#x1f496;&#x1f496; 本专栏聚焦于Python结合OpenCV库进行计算机视觉开发的专业教程。通过系统化的课程设计&#xff0c;从基础概念入手&#xff0c;逐步深入到图像处理、特征检测、物体识…