欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 手游 > 移动技术开发:保存密码和自动登录

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

2024/10/24 22:25:29 来源:https://blog.csdn.net/cxx0316/article/details/142796654  浏览:    关键词:移动技术开发:保存密码和自动登录

1 实验名称

       保存密码和自动登录

2 实验目的

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

3 实验源代码

布局文件代码:

(1)activity_main.xml

<?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

<?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

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

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com