【安卓】基于SharedPreferences实现用户登录信息的存储
1. 设计登录页面
比较简单,重要的点就一个,有一个记住密码的按钮。
代码实现
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="match_parent"android:layout_height="match_parent"><androidx.constraintlayout.widget.Guidelineandroid:id="@+id/guideline"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"app:layout_constraintGuide_percent="0.13" /><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="登录"android:textSize="30sp"app:layout_constraintBottom_toTopOf="@+id/guideline"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.498"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.789" /><EditTextandroid:id="@+id/editTextTextPersonName"android:layout_width="wrap_content"android:layout_height="wrap_content"android:ems="10"android:hint="请输入用户名"android:inputType="textPersonName"app:layout_constraintBottom_toTopOf="@+id/guideline2"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="@+id/guideline"><requestFocus /></EditText><androidx.constraintlayout.widget.Guidelineandroid:id="@+id/guideline2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"app:layout_constraintGuide_percent="0.24212272" /><androidx.constraintlayout.widget.Guidelineandroid:id="@+id/guideline3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"app:layout_constraintGuide_percent="0.36981758" /><EditTextandroid:id="@+id/editTextTextPassword"android:layout_width="wrap_content"android:layout_height="wrap_content"android:ems="10"android:hint="请输入密码"android:inputType="textPassword"app:layout_constraintBottom_toTopOf="@+id/guideline3"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="@+id/guideline2" /><CheckBoxandroid:id="@+id/checkBox"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="记住密码"app:layout_constraintBottom_toTopOf="@+id/guideline4"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.839"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="@+id/guideline3"app:layout_constraintVertical_bias="0.533" /><androidx.constraintlayout.widget.Guidelineandroid:id="@+id/guideline4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"app:layout_constraintGuide_percent="0.46" /><Buttonandroid:id="@+id/button"android:layout_width="0dp"android:layout_height="wrap_content"android:text="登录"app:layout_constraintBottom_toTopOf="@+id/guideline5"app:layout_constraintEnd_toEndOf="@+id/editTextTextPassword"app:layout_constraintStart_toStartOf="@+id/editTextTextPassword"app:layout_constraintTop_toTopOf="@+id/guideline4" /><androidx.constraintlayout.widget.Guidelineandroid:id="@+id/guideline5"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"app:layout_constraintGuide_percent="0.6" /><TextViewandroid:id="@+id/textView2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="注册"android:textSize="18sp"app:layout_constraintBottom_toTopOf="@+id/guideline6"app:layout_constraintEnd_toEndOf="@+id/button"app:layout_constraintStart_toStartOf="@+id/button"app:layout_constraintTop_toTopOf="@+id/guideline5" /><androidx.constraintlayout.widget.Guidelineandroid:id="@+id/guideline6"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"app:layout_constraintGuide_percent="0.75" />
</androidx.constraintlayout.widget.ConstraintLayout>
2. 用户登录信息的获取和保存
// 当登录按钮被点击了
button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// mypwd表示的是文件名 (在 /data/data/<package name>/mypwd.xml 中)// MODE_PRIVATE 指的是文件的读取模式// 1. 通过SharedPreferences保存数据SharedPreferences mypwd = getSharedPreferences("mypwd", MODE_PRIVATE);SharedPreferences.Editor editor = mypwd.edit();editor.putString("name", editTextTextPersonName.getText().toString());editor.putString("pwd", editTextTextPassword.getText().toString());editor.apply(); // 异步的}
});
3. 通过SharedPreferences保存的数据查看
通过输入信息,点击登录,我们的数据就被在配置文件中了。
点击下面的两个窗口,打开一个页面。
在 data/data/<项目名>/shared_prefs/fileName.xml 可以找到配置文件。
4. 数据通过代码来进行读取
// 1. 获取数据对象
SharedPreferences mypwd = getSharedPreferences("mypwd", MODE_PRIVATE);
// 2. 获取内容
String username = mypwd.getString("name", "");
String password = mypwd.getString("pwd", "");
// 3. 数据显示
usernameDom = (TextView) findViewById(R.id.username);
passwordDom = (TextView) findViewById(R.id.password);
usernameDom.setText(username);
passwordDom.setText(password);
运行效果:
【安卓】基于SharedPreferences实现用户登录信息的存储相关推荐
- 基于jwt的用户登录认证
最近在app的开发过程中,做了一个基于token的用户登录认证,使用vue+node+mongoDB进行的开发,前来总结一下. token认证流程: 1:用户输入用户名和密码,进行登录操作,发送登录信 ...
- 用户修改了信息jwt服务器怎么识别,django使用JWT保存用户登录信息
什么是JWT? Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站 ...
- php注册登录描述,基于PHP实现用户登录注册功能的详细教程
教程前先给大家看看小编的实现成果吧! 图1: 图2: 图3: 教程: 实现这个功能我们需要五个php文件: login.php (登录界面,如图2) 登录 登录页面 用户名: required=&qu ...
- 通过cookie保存并读取用户登录信息
浏览器将cookie以key/value的形式保存到客户机的某个指定目录 通过cookie的getCookies()方法可获取所有cookie对象的集合 通过cookie对象的getName()方法可 ...
- oracle通过sid远程登录,oracle怎么捕获用户登录信息,如SID,IP地址等
可以利用登录触发器,如 CREATE OR REPLACE TRIGGER tr_login_record AFTER logon ON DATABASE DECLARE miUserSid NUMB ...
- 如何在redhat8里使用gcc命令_如何使用who命令检查用户登录信息
请关注本头条号,每天坚持更新原创干货技术文章. 如需学习视频,请在微信搜索公众号"智传网优"直接开始自助视频学习 1. 前言 本教程主要介绍如何使用who命令检查用户登录信息. 如 ...
- 通过cookie保存并读取用户登录信息实例
通过cookie的getCookies()方法可获取所有cookie对象的集合:通过getName()方法可以获取指定的名称的cookie:通过getValue()方法获取到cookie对象的值.另外 ...
- JavaScript之判断用户登录信息
1.今天来介绍一下如何使用JavaScript脚本语言来判断用户登录信息,在我学struts2时,就有输入校验和拦截器来实现判断用户登录时,输入的用户信息是否完整,输入的用户信息是否符合用户的要求等等 ...
- 把discuzX 的用户登录信息添加到纯静态页面
把discuzX 的用户登录信息添加到纯静态页面 转:http://cq6.com/forum.php?mod=viewthread&tid=86560&extra=page%3D1& ...
最新文章
- 翻译们又要失业?Facebook最新无监督机器翻译成果,BLEU提升10个点!
- QT5.11 + VS2017 环境搭建
- 【蓝桥杯】算法提高 7-2求arccos值
- 优化你的手游:使用脏矩形技术
- js移除字符串的中文/空格
- springboot ElasticSearch 简单的全文检索高亮
- 数据结构:(5)算法分析基础
- python-docx 如何获取当前字号_餐饮老字号迈上“云端”
- 吴恩达《机器学习》第六章:逻辑回归
- c语言指针和数组的转换,指针和数组的转换
- SAP B1 VS女士的Navision ERP的比较 - 知道如何选择软件
- java过滤器是用来干什么的_java过滤器有什么作用
- C语言union总结
- 案例2:随机森林来填补缺失值
- 光遇显示服务器已满怎么办,光遇服务器已满怎么办 光遇服务器已满您正在登陆队列中解决方法...
- 深入剖析ISA防火墙策略执行过程
- 前端缓存/浏览器缓存机制
- Bzoj4826 [Hnoi2017]影魔
- 呼吸灯——verilog 实现
- 喜马拉雅音频数据+Python+xm-sign突破
热门文章
- MFC动态创建控件并响应事件代码实现过程
- fdtd中时间监视器怎么放_FDTDsolutions经典问题集.pdf
- 第四范式亮相世界智能大会 共探智能发展下人才培养路径
- Debug Tensorflow: 随着训练进行,内存消耗越来越大
- tensorflow随笔-底层梯度
- 新书首发 | 《机器学习 公式推导与代码实现》正式出版!(文末送书)
- 【Python】扫盲帖:关于在Windows、Linux和Mac上安装设置Python的问题
- 【Python】嫦娥探月数据(PDS)处理与可视化
- 【Python基础】为什么更改列表'y'也会更改列表'x'?
- 网易云信亮相LiveVideoStackCon 2019,分享BBR在实时音视频领域的应用