Android用SharedPreferences怎么实现登录注册注销功能
发表于:2025-02-19 作者:千家信息网编辑
千家信息网最后更新 2025年02月19日,这篇"Android用SharedPreferences怎么实现登录注册注销功能"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这
千家信息网最后更新 2025年02月19日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安全错误
数据库的锁怎样保障安全
数据库转换技术大全
dhcp服务器ip怎么设置推荐
gmail邮箱pip服务器
游戏软件开发与制作h5
tsql语句建立数据库
我的世界关闭服务器
问道手游承包服务器
石化网络安全培训
58同城服务器一览表
master数据库怎么设置
中科院信工所网络安全
软件开发项目进度管理
自己搭建聊天服务器供三万人聊天
内部网络安全制度
软件开发质量控制文件
追梦人网络技术有限公司
数据库 监听日志 过大
云服务器里的语言环境是什么意思
重返帝国换服务器
消防部队网络安全教育ppt
什么专业要学数据库
京东用的数据库
网络安全是片面的
支付宝服务器清理
丽水电脑软件开发工具
手机显示自己的服务器地址
北京丰台青少年网络安全教育
浙江专业软件开发服务
意识形态和网络安全方面
网络安全周主题日有什么