Android用SharedPreferences怎么实现登录注册注销功能
发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,这篇"Android用SharedPreferences怎么实现登录注册注销功能"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这
千家信息网最后更新 2025年11月10日Android用SharedPreferences怎么实现登录注册注销功能
这篇"Android用SharedPreferences怎么实现登录注册注销功能"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Android用SharedPreferences怎么实现登录注册注销功能"文章吧。
一、本文逻辑
本文的注册登录逻辑如下:
1、注册页面:有账号可以直接去登录页面。没有账号的话填写账号密码,检测账号密码不为空,点击立即注册,保存账号信息,跳转到登录页面。
2、登录页面:首先读取缓存的账号密码和是否记住密码,将账号显示,判断记住密码的标志,为空或false,不显示密码,需要输入密码,为true则直接将缓存的密码显示,选择是否记住密码按钮,将此状态存入缓存,点击登录跳转到主页。
3、主页:首先取缓存,判断是否登录,若没有登录跳转到注册页面。点击退出登录,跳转到注册页;(2)点击注销账号,清除所有缓存,跳转到注册页面。

二、代码
1.布局界面
注册页面 activity_register.xml
登录界面 activity_login.xml
主页面
2.Activity 逻辑
注册页面的逻辑
package com.example.yuan;import android.content.Intent;import android.content.SharedPreferences;import android.os.Bundle;import android.text.TextUtils;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import androidx.annotation.Nullable;import androidx.appcompat.app.AppCompatActivity;/** * Created by Yuan on 2020/8/6 17:08. * 包名: com.example.yuan * 类说明:注册(按钮的点击事件直接使用 Activity 作为事件监听器) */public class RegisterActivity extends AppCompatActivity implements View.OnClickListener { //获取用户名,昵称,密码,确认密码 private EditText reg_uname,reg_uname2,et_pwd,et_pwd2; //获取用户名,昵称,密码,确认密码的值 private String uname,pwd,pwd2; private SharedPreferences sp; private SharedPreferences.Editor editor;private Button btn_reg,btn_toLogin; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); init();//获取界面控件 } //UI组件初始化与事件绑定 private void init(){ //UI组件初始化 reg_uname=findViewById(R.id.reg_uname); et_pwd=findViewById(R.id.reg_pwd); et_pwd2=findViewById(R.id.reg_pwd2); btn_toLogin=findViewById(R.id.register_toLogin_btn); btn_reg=findViewById(R.id.register_btn); //点击事件绑定 btn_reg.setOnClickListener(this); btn_toLogin.setOnClickListener(this); }//点击事件 @Override public void onClick(View v) { switch (v.getId()){ case R.id.register_btn: //获取参数 uname=reg_uname.getText().toString().trim(); pwd=et_pwd.getText().toString().trim(); pwd2=et_pwd2.getText().toString().trim(); //判断 if(uname.equals("") || pwd.equals("") ){ Toast.makeText(RegisterActivity.this, "用户名或密码不能为空", Toast.LENGTH_SHORT).show(); return; }else if(!(pwd.equals(pwd2))){ Toast.makeText(RegisterActivity.this,"两次输入密码不一致",Toast.LENGTH_SHORT).show(); }else { //loginInfo表示文件名 sp=getSharedPreferences("loginInfo", MODE_PRIVATE); //获取编辑器 editor=sp.edit(); //存入注册的用户信息 editor.putString("username", uname); editor.putString("password",pwd); //提交修改 editor.commit(); Toast.makeText(RegisterActivity.this,"注册成功",Toast.LENGTH_SHORT).show(); startActivity(new Intent(getApplicationContext(),LoginActivity.class)); } break; case R.id.register_toLogin_btn://跳转到登录页面 startActivity(new Intent(getApplicationContext(),LoginActivity.class)); finish(); break; } }}登录页面的逻辑
package com.example.yuan;import android.content.Context;import android.content.Intent;import android.content.SharedPreferences;import android.os.Bundle;import android.text.TextUtils;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.CheckBox;import android.widget.EditText;import android.widget.Toast;import androidx.annotation.Nullable;import androidx.appcompat.app.AppCompatActivity;/** * Created by Yuan on 2020/8/6 16:12. * 包名: com.example.yuan * 类说明:登录 */public class LoginActivity extends AppCompatActivity { private EditText et_uname,et_upwd;//获取用户名,密码 private CheckBox isRemember; private Button login_btn; private String username,password,sp_name,sp_pwd; private Boolean sp_isRemember;//是否记住密码的标志 private Context mContext; private SharedPreferences sp; private SharedPreferences.Editor editor; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); init();//获取界面控件 //读取缓存数据 sp=getSharedPreferences("loginInfo", MODE_PRIVATE); sp_name=sp.getString("username",""); sp_pwd=sp.getString("password",""); sp_isRemember=sp.getBoolean("isRemember",false); //如果有账号,直接显示 Log.d("TAG",sp_name); et_uname.setText(sp_name); //如果上次登录记住了密码,本次登录直接设置上 if(sp_isRemember.equals(true)){ et_upwd.setText(sp_pwd); isRemember.setChecked(true); } mContext= LoginActivity.this; //登录按钮的点击事件(直接用匿名内部类) login_btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //开始登录,获取输入的用户名和密码 username = et_uname.getText().toString().trim(); password = et_upwd.getText().toString().trim(); // TextUtils.isEmpty判断是否输入 if (TextUtils.isEmpty(username)) { Toast.makeText(mContext, "请输入手机号", Toast.LENGTH_SHORT).show(); } else if (TextUtils.isEmpty(password)) { Toast.makeText(mContext, "请输入密码", Toast.LENGTH_SHORT).show(); // 判断,输入的账号密码,是否与保存在SharedPreferences中一致 } else if (username.equals(sp_name) && password.equals(sp_pwd)) { //一致登录成功 Toast.makeText(mContext, "登录成功", Toast.LENGTH_SHORT).show(); //判断记住密码按钮是否选中,选中则将isRemember设置为true,保存状态 sp=getSharedPreferences("loginInfo", MODE_PRIVATE); //获取编辑器 editor=sp.edit(); if (isRemember.isChecked()) {//如果记住密码选中,存入true,否则存入false editor.putBoolean("isRemember",true); }else { editor.putBoolean("isRemember",false); } editor.putBoolean("isLogin",true);//保存登录状态 editor.apply();//提交修改 //登录成功后关闭此页面进入主页 //跳转到主界面,登录成功的状态传递到 MainActivity 中 Intent intent=new Intent(getApplicationContext(),MainActivity.class); intent.putExtra("name",username); startActivity(intent); finish();//销毁登录界面 } else if ((sp_pwd != null && !TextUtils.isEmpty(sp_pwd) && !password.equals(sp_pwd))) { Toast.makeText(mContext, "输入的用户名和密码不一致", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(mContext, "此用户名不存在", Toast.LENGTH_SHORT).show(); } } }); } //获取界面控件 private void init(){ et_uname=findViewById(R.id.login_username); et_upwd=findViewById(R.id.login_password); isRemember=findViewById(R.id.login_remember); login_btn=findViewById(R.id.login_btn); }//注册按钮的点击事件(直接绑定在控件上) public void register(View view) { Intent intent=new Intent(getApplicationContext(),RegisterActivity.class); startActivity(intent); }}主页面的逻辑
package com.example.yuan;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;import android.content.SharedPreferences;import android.os.Bundle;import android.text.TextUtils;import android.util.Log;import android.view.View;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends AppCompatActivity { private SharedPreferences sp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView textView=findViewById(R.id.text); Intent intent=getIntent(); String name=intent.getStringExtra("name"); sp=getSharedPreferences("loginInfo", MODE_PRIVATE); textView.setText("欢迎你,"+name); Boolean isLogin=sp.getBoolean("isLogin",false); if (!isLogin){ startActivity(new Intent(getApplicationContext(),RegisterActivity.class)); finish(); }else if(TextUtils.isEmpty(name)){ startActivity(new Intent(getApplicationContext(),LoginActivity.class)); finish(); } } public void Quit(View view) { sp=getSharedPreferences("loginInfo", MODE_PRIVATE); SharedPreferences.Editor editor=sp.edit(); editor.putBoolean("isLogin",false); editor.commit(); startActivity(new Intent(getApplicationContext(),RegisterActivity.class)); finish(); } /** * @param view */ public void zhuxiao(View view) { sp=getSharedPreferences("loginInfo", MODE_PRIVATE); SharedPreferences.Editor editor=sp.edit(); editor.clear(); editor.commit(); Toast.makeText(MainActivity.this,"注销成功",Toast.LENGTH_SHORT).show(); startActivity(new Intent(getApplicationContext(),RegisterActivity.class)); finish(); }}以上就是关于"Android用SharedPreferences怎么实现登录注册注销功能"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
登录
密码
账号
页面
用户
输入
事件
用户名
界面
成功
缓存
逻辑
主页
内容
按钮
一致
控件
状态
功能
信息
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
知网数据库啥意思
什么是web数据库技术
数据库的死活锁
有关古籍的数据库
贝德尔软件开发公司招聘
徐州管理系统软件开发
校园服务器如何建立
数据库%_
访问控制列表网络安全
易语言如何保证数据库安全
旅游企业数据库建立工作事项
数据库数据报表
证书服务器的功能
专升本数据库技术是什么
杭州群控云控软件开发商
网络安全第五空间设计 lao
文明重启各种服务器有什么区别
网络安全板块也出现拉升走势
pl操作数据库
软件开发附加合同范本
福州网络安全产业
甘肃超频服务器现货
网络安全 三十一条
济南 软件开发
计算机网络技术女孩学好
无锡互联网软件开发管理方法
题库制作软件开发
易语言http代理服务器
滑坡数据库
计算机网络技术专业课学什么