Android---实现登录用户信息保存

Android学习系列(二): 保存文件到手机内存-模拟用户登录保存用户信息 今天要学习如何保存文件到手机内存中,具体思想如下: (1)创建登录的Activity,包含用户名EditText,密码EditText,记住密码CheckBox 和登录按钮Button。 (2)创建保存和读取文件的业务类,以供activity入口类调用。 (3)创建登录Activity的入口class,监听登录按钮,如果在手机内存中存在用户信息文件,读取用户信息,回填到用户密码输入框中; 阅读详情

前两天用SharedPreference实现了保存用户历史信息,当用户再次登录的时候在AutoCompleteTextView(仿google搜索自动提示框)中显示历史用户信息。

这次用户信息是通过XML保存的,其中比较中要的包括了XML数据的生成和XML数据的解析,以及生成apk私有数据。

XML数据生成:在将用户信息保存成XML数据前,我们应该先了解一个非常重要的类XmlSerializer,这个类帮助我们将需要保存成XML数据的信息进行序列化。

代码
public String writeToString(List<UserInfo> users){ //实现xml信息序列号的一个对象 XmlSerializer serializer=Xml.newSerializer(); StringWriter writer=new StringWriter(); try { //xml数据经过序列化后保存到String中,然后将字串通过OutputStream保存为xml文件 serializer.setOutput(writer); //文档开始 serializer.startDocument("utf-8", true); //开始一个节点 serializer.startTag("", "users"); //开始一个子节点 for(UserInfo user : users){ serializer.startTag("", "user"); serializer.attribute("", "id", String.valueOf(user.getId())); serializer.startTag("", "name"); serializer.text(user.getName()); serializer.endTag("", "name"); serializer.startTag("", "pwd"); serializer.text(user.getPwd()); serializer.endTag("", "pwd"); serializer.startTag("", "isremember"); serializer.text(String.valueOf(user.getIsRemember())); serializer.endTag("", "isremember"); serializer.endTag("", "user"); } serializer.endTag("", "users"); //关闭文档 serializer.endDocument(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return writer.toString(); }

将字串保存为apk的私有文件

代码
public boolean writeToXml(Context context,String str){ try { OutputStream out=context.openFileOutput("users.xml", Context.MODE_PRIVATE); OutputStreamWriter outw=new OutputStreamWriter(out); try { outw.write(str); outw.close(); out.close(); return true; } catch (IOException e) { // TODO Auto-generated catch block return false; } } catch (FileNotFoundException e) { // TODO Auto-generated catch block return false; } }

 XML数据解析

由于使用DOM方法需要将整个XML文档加载内存中,对系统资源占用比较多,这对内存比较紧张的Android系统来说,使用DOM方法读取XML文档会有很大的限制。 所以使用SAX方法读取XML,以减少对内存资源的占用。

使用SAX解析xml数据其实很简单,无非就是几个过程,startDocument——startElement——character——endElement——endDocument

startDocument:开始解析xml数据,如果处理的数据很多,在这里实例化一个list对象。

startElement:节点元素数据的处理,获取节点元素的属性值,往往在这里对抽象化的对象进行实例化如一个用户的信息UserInfo user

character:获得杰点元素的内容,在这里专门获得没有属性节点的内容,如<name>cbin</name>

endElement:一个节点的结束,也就相当于一个用户信息的解析完毕,在这里将user添加到list中

endDocument:XML数据解析结束

代码
public class UsersHandler extends DefaultHandler { private List<UserInfo> list=null; private UserInfo user=null; private String tagname; //开始解析XML文档 @Override public void startDocument() throws SAXException{ list=new ArrayList<UserInfo>(); super.startDocument(); } //开始处理节点,在这里获得节点属性值的(节点属性) @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException{ if(localName.equals("user")){ user=new UserInfo(); user.setId(Integer.parseInt(attributes.getValue("id"))); } this.tagname=localName; super.startElement(uri, localName, qName, attributes); } //处理没有属性的节点(节点内容) @Override public void characters(char[] ch, int start, int length) throws SAXException{ if(this.tagname!=""){ if(this.tagname.equals("name")){ String str=new String(ch, start, length); user.setName(str); }else if(this.tagname.equals("pwd")){ String str=new String(ch, start, length); user.setPwd(str); }else if(this.tagname.endsWith("isremember")){ String str=new String(ch, start, length); user.setIsRemember(Integer.parseInt(str)); } } super.characters(ch, start, length); } @Override public void endElement(String uri, String localName, String qName) throws SAXException{ if(localName.equals("user")){ list.add(user); } super.endElement(uri, localName, qName); } @Override public void endDocument() throws SAXException{ super.endDocument(); } public List<UserInfo> getUserList(){ return list; } }

表示层与SharedPreferences中实现用户登录大同小异,无非是一个登录的逻辑处理

1、加载页面时,加载xml中数据,将用户名列表绑定AutoCompleteTextView

2、假若从act中选定数据,根据用户名查找密码等信息绑定et、ck;

3、登录成功,是新用户直接添加,老用户删除原有记录,重新记录用户信息。

android 用sharepreferences实现仿QQ登录多账号的保存的效果 大家都知道可以用sharepreferences来存储登录的账号和密码,sharepreferences中是以(key,value)来进行存储,如果key值一样的话,保存的账号永远是最后一个登录的账号。当然如果这就是你想要实现的,当下一次登录的时候显示上一次登录的账号和密码信息,直接putString()就可以实现。那么多账号的保存用什么比较简单呢?sharepreferences中有一个putS 阅读详情

相关推荐

aubo i5 + realsense D435i识别抓取实践二

aubo i5 + realsense D435i识别抓取实践二前言一、手眼标定是什么?二、标定软件安装1.aruco_ros安装2.vision_visp安装3.easy_handeye安装4.realsense驱动安装5.安装realsense ROS软件包三、配置1.launch文件修改2.打印二维码四、手眼标定1.启动launch文件2.标定步骤3.发布tf关系 前言 前面配置好了aubo机械臂的ROS软件包,机械臂可以正常运行后,接下来我们进行机械臂与相机的手眼标定。手眼标定分为eye_on_ha

转角 6373

android---实现登录用户信息保存(XML)

前两天用SharedPreference实现了保存用户历史信息,当用户再次登录的时候在AutoCompleteTextView(仿google搜索自动提示框)中显示历史用户信息。 这次用户信息是通过XML保存的,其中比较中要的包括了XML数据的生成和XML数据的解析,以及生成apk私有数据。 XML数据生成:在将用户信息保存成XML数据前,我们应该先了解一个非常重要的类XmlSeri...

amsogu6822的博客 1121

新手避坑指南:用镭神C32和KVH 1750 IMU做标定,为什么直接上lidar_align会失败?

本文详细解析了使用镭神C32激光雷达和KVH 1750 IMU进行标定时常见的失败原因及解决方案。从IMU的微分传感器特性到Lidar-IMU标定的数学本质,再到可行的标定方案和实操注意事项,帮助新手避开认知陷阱,掌握正确的标定方法。

weixin_30162121的博客 327

ASP.NET保持用户状态的九种选择

2003-06-10■陶刚编译■yesky摘要:ASP.NET为保持用户请求之间的数据提供了多种不同的途径。你可以使用Application对象、cookie、hidden fields、Sessions或Cache对象,以及它们的大量的方法。决定什么时候使用它们有时很困难。本文将介绍了上述的技术,给出了什么时候使用它们的一些指导。尽管这些技术中有些在传统ASP中已经存在,但是有了.NET框架组件

深度Java 5368

融合ZILN损失与深度学习的LTV预测:从概率分布到精准营销决策

本文探讨了融合ZILN损失与深度学习的LTV预测方法,通过深度概率模型精准预测用户生命周期价值(LTV),优化营销决策。文章详细解析了ZILN损失函数的优势、模型架构设计要点及工程化落地实践,帮助企业在预算分配、用户分层等场景实现数据驱动的精准营销。

weixin_29093169的博客 308

【推荐100个unity插件】帮助你快速开发一款FPS游戏—— FPS Framework

FPS Framework 快速入门指南 FPS Framework 是一个 Unity 开发框架,可加速 FPS 游戏开发。主要功能包括: 第一人称控制器:基于 Character Controller 实现,提供移动、跳跃、下蹲等功能,支持自定义参数调整 渲染管线转换:内置 RP 转换器,支持 URP/HDRP 等渲染管线一键切换 库存系统: 采用双列表管理:物品列表(Items)和可收集物列表(Collectables) 支持自定义库存物品和可收集物类型 提供拾取/丢弃功能实现 快速开始: 通过预制件

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2569

android 保存用户登录账号

android应用程序中有些使用到用户账号登录,例如QQ登录,登录界面需要用户输入账号,为了提高用户体验,应该尽量减少用户的输入操作,因此需要将用户登录过的账号保存下来,以供下次使用。保存登录账号是一个小量数据,使用Sharedpreferences或普通文件均可实现。以下程序代码保存用户使用过的5个账号。 程序运行界面: 布局文件(/res/layout/main.xml) &lt...

445822357 328

中国石油招标投标网 — 中标候选人爬虫技术分析

复制真实浏览器的 TLS 握手参数(密码套件顺序、TLS 扩展、ALPN 等),绕过基于 JA3/JA3S 指纹的服务端检测。所有 API 请求体使用 RSA-1024 公钥加密,响应体使用私钥解密,HTTP body 全程为密文。库使用 urllib3 的默认 TLS 握手参数,与真实浏览器差异明显,易被 JA3 指纹检测工具识别。密钥隐藏在 CSS 文件中,这是一种隐蔽分发技术,防止简单的密钥抓取。切换次数越多,等待时间越长,最大 60 秒,避免被代理 API 限流。为空,也返回包含基础信息的空行。

猫敷雪 285

怎么保存Android端的用户登录状态

如:用户第一次登录后,应该在一段时间内保存该状态,就跟web端的session那样!每次请求就可以判断用户是否登录!

702

24、汽车黑客技术全解析:诊断代码、车库创建与系统攻防

本文深入探讨了汽车黑客技术的核心内容,包括诊断代码模式与参数ID、创建开放车库社区、汽车系统相关技术、硬件与软件工具、攻击与防御手段,以及车辆通信与网络安全。无论你是汽车安全研究人员、爱好者还是开发者,都能从中获取全面的技术解析与实践指南。

Apple的专栏 228

基于YOLOv11的手术器械计数系统:从数据集构建到Web应用部署

m2cai16-tool数据集:包含15种腹腔镜手术器械的标注图像Cholec80数据集:包含80个胆囊切除手术视频,标注了7种器械SurgicalTools数据集:包含超过10,000张手术器械图像,涵盖21类常见器械手术剪(Scissors)止血钳(Hemostat)持针器(Needle Holder)手术刀(Scalpel)镊子(Forceps)拉钩(Retractor)吸引器(Suction)

YOLO 396

Android SharedPreferences 的 getsharedpreference(name,mode)

Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data//shared_prefs目录下。    getSharedPreferences(name,mode)方法的第一个参数用于指定该文件的名称,名称不用带后缀,后缀

Elena_wang的专栏 3021

C#项目实战——【实例】企业人事管理系统(二):4、数据库与数据表设计;5、创建项目;

(1)展开新建的db_PWMS数据库节点,选中“表”节点,单击鼠标右键,在弹出的快捷菜单中选择“新建表”命令,如下图:(2)在SQL Server 2008管理器的右边显示一个新表,这里输入要创建的表中所需要的字段,并设置主键,如下图:(3)单击“保存”按钮,弹出“选择名称”对话框,如下图,输入要新建的表名“tb_Login”,单击“确定”按钮,即可在数据库中添加一个表。

做有价值的事,积累有价值的笔记! 1621

android登录成功后保存用户,Android---实现登录用户信息保存

这次用户信息是通过XML保存的,其中比较中要的包括了XML数据的生成和XML数据的解析,以及生成apk私有数据。XML数据生成:在将用户信息保存成XML数据前,我们应该先了解一个非常重要的类XmlSerializer,这个类帮助我们将需要保存成XML数据的信息进行序列化。代码publicString writeToString(Listusers){//实现xml信息序列号的一个对象XmlSeri...

weixin_39657825的博客 2101

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Android实现登录,将用户信息保存、到.txt,并且读取数据的三种方式

Android实现登录,将用户信息保存、到.txt,并且读取数据的三种方式 activity_main.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="h

qq_42876285的博客 3907

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

android---数据保存之SQLite(实现登录用户信息保存)

由于不大善于总结和撰写,所以很多概念都以网络上参考学习为主,我会将这些知识融于到一个具体的练习中加以理解、巩固和分享。 今天要学习的SQLite个人感觉和以前使用的sql server,比较基础的东西都大同小异,基本的创建数据库表、对数据的增删改查的语句都差不多,如果懂得sql server的人学习SQLite应该还是容易上手的。唯一感觉不习惯的是,初次了解SQLite,在网上看别人的...

amsogu6822的博客 874

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

android---数据保存之SQLite(实现登录用户信息保存

原文地址:http://www.apkbus.com/forum.php?mod=viewthread&tid=1695&extra=page%3D2 由于不大善于总结和撰写,所以很多概念都以网络上参考学习为主,我会将这些知识融于到一个具体的练习中加以理解、巩固和分享。

b9myzhou的专栏 2098

android实现SqLite自动登录,android---数据保存之SQLite(实现登录用户信息保存

今天要学习的SQLite个人感觉和以前使用的sql server,比较基础的东西都大同小异,基本的创建数据库表、对数据的增删改查的语句都差不多,如果懂得sql server的人学习SQLite应该还是容易上手的。唯一感觉不习惯的是,初次了解SQLite,在网上看别人的示例时,总感觉得很混乱,其实原因在于同样实现一个数据的增删改查,是有几种不同方法的。例如插入数据:有使用SQLiteDataBase...

weixin_39730801的博客 381

安卓实现登陆

1:安卓端通过访问web端来实现登录验证,并把用户的信息保存下来

say_you_can的博客 620

安卓数据保存登录状态

public class loginServe { public static boolean saveUserInfo(Context context,String username,String password){ try { File file = new File(context.getFilesDir(),"info.txt");

qq_33163983的博客 1285

Android 一个简单的登陆窗口的实现(文件的保存与读取)

好久没写过代码了,现在又开始重操旧业了。想了想,还是回到优快云博客来吧,原本都是在Github上面自己弄 Pages写的,但是还是挺舍不得优快云的。在这里继续开写吧,反正都是一些菜鸟的流水账的东西。记录Mark一下。 今天写的是一个简单的登陆界面,主要功能就是实现记住密码这个简单的功能,说白了就是在Android中实现文件 的保存与再次的读取。 首先是布局文件,很简单的线性布局。 ...

iteye_2022的博客 228

以XML的方式保存密码

1:布局文件:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="ma

战神 817
上一篇: Android网络编程之通过Post传递参数
下一篇: android相对布局 相对对齐
爽玩一百天
博客等级 码龄14年 20粉丝 9原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值