Android用SharedPreferences怎么实现登录注册注销功能
发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,这篇"Android用SharedPreferences怎么实现登录注册注销功能"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这
千家信息网最后更新 2024年11月26日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安全错误
数据库的锁怎样保障安全
数据库中id自动加1
服务器可以装声卡吗
美人鱼网络安全手抄报背景
计算机网络技术统招考什么
学校五个一网络安全宣传
计算机信息网络安全员考试
网络安全有什么弊端
网络安全二级违规的行为有哪些
sql数据库 bit类型
沧州im即时通讯软件开发
软件开发技术文档翻译
软件开发的计划表
普陀区营销软件开发品质保障
税友集团杭州软件开发岗工资
jfinal 数据库备份
wind数据库如何免费查数据
网络安全系统命令
从事网络安全行业需要什么资质
在信息世界的数据库的术语
安装2000数据库 挂起
中国有哪些国产的数据库管理系统
湖北省首家网络安全协会
2018网络安全测试题答案文库
断网网络安全法
软件开发公司做系统
服务器把别人tp过来指令
怎么知道一个网站是独立服务器
网络安全运维外包目的
安装2000数据库 挂起
数据库机房控制室干啥的