Android开发中保存用户名和密码

Android Studio实现账号密码保存功能 Android Studio实现账号密码保存功能在移动应用的开发中,账号密码保存功能是一个非常常见且有用的功能。它可以让用户在下次登录时无需重复输入账号和密码,提升用户体验。本文将介绍如何使用Android Studio实现账号密码保存功能,并提供相应的源代码。首先,在Android Studio中创建一个新的项目。接着,在布局文件中添加用户名和密码输入框以及保存按钮的视图组件。例如,可以使用以下的XML布局代码: 接下来,在Activity类中找到对应的视图组件,并添加点击保存按钮的事件处理逻辑。在点击保 阅读详情

我们不管在开发一个项目或者使用别人的项目,都有用户登录功能,为了让用户的体验效果更好,我们通常会做一个功能,叫做保存用户,这样做的目地就是为了让用户下一次再使用该程序不会重新输入用户名和密码,这里我使用3种方式来存储用户名和密码

1、通过普通 的txt文本存储

2、通过properties属性文件进行存储

3、通过SharedPreferences工具类存储

第一种:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
      * 保存用户名和密码的业务方法
      *
      * @param username
      * @param password
      * @return
      */
     public static boolean saveUserInfo(String username, String password) {
         try {
             // 使用当前项目的绝对路径
             File file = new File( "data/data/com.example.android_file_handler/info.txt" );
             // 创建输出流对象
             FileOutputStream fos = new FileOutputStream(file);
             // 向文件中写入信息
             fos.write((username + "##" + password).getBytes());
             // 关闭输出流对象
             fos.close();
             return true ;
         } catch (Exception e) {
             throw new RuntimeException();
         }
     }

这里写的路径是当前项目的绝对路径,这样做是有缺陷的,比如你将项目路径改了,这里的路径就获取就失败了,所以Android提供了通过上下文一个方法获取当前项目的路径

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static boolean saveUserInfo(Context context, String username,
             String password) {
         try {
             // 使用Android上下问获取当前项目的路径
             File file = new File(context.getFilesDir(), "userinfo.txt" );
             // 创建输出流对象
             FileOutputStream fos = new FileOutputStream(file);
             // 向文件中写入信息
             fos.write((username + "##" + password).getBytes());
             // 关闭输出流对象
             fos.close();
             return true ;
         } catch (Exception e) {
             throw new RuntimeException();
         }
     }

上面这两个方法都是存储用户名和密码,接下来是获取用户名和密码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/**
      * 获取普通txt文件信息
      *
      * @param context
      * @return
      */
     public static Map<string, object= "" > getTxtFileInfo(Context context) {
         try {
             // 创建FIle对象
             File file = new File(context.getFilesDir(), "userinfo.txt" );
             // 创建FileInputStream对象
             FileInputStream fis = new FileInputStream(file);
             // 创建BufferedReader对象
             BufferedReader br = new BufferedReader( new InputStreamReader(fis));
             // 获取文件中的内容
             String content = br.readLine();
             // 创建Map集合
             Map<string, object= "" > map = new HashMap<string, object= "" >();
             // 使用保存信息使用的##将内容分割出来
             String[] contents = content.split( "##" );
             // 保存到map集合中
             map.put( "username" , contents[ 0 ]);
             map.put( "password" , contents[ 1 ]);
             // 关闭流对象
             fis.close();
             br.close();
             return map;
         } catch (Exception e) {
             e.printStackTrace();
             return null ;
         }
     }</string,></string,></string,>

这里我将获取到的内容封装到Map集合中,其实使用普通的txt文本存储用户名和密码是有缺陷的,这里我是通过“##”来分割用户名和密码的,那么如果用户在密码中的字符又包含了“#”这个特殊符号,那么最后在获取时,则获取不倒原来保存的信息,所以个人认为dier中方法就可以解决这个问题

第二种:

使用属性文件保存用户名和密码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/**
      * 使用属性文件保存用户的信息
      *
      * @param context 上下文
      * @param username 用户名
      * @param password  密码
      * @return
      */
     public static boolean saveProUserInfo(Context context, String username,
             String password) {
         try {
             // 使用Android上下问获取当前项目的路径
             File file = new File(context.getFilesDir(), "info.properties" );
             // 创建输出流对象
             FileOutputStream fos = new FileOutputStream(file);
             // 创建属性文件对象
             Properties pro = new Properties();
             // 设置用户名或密码
             pro.setProperty( "username" , username);
             pro.setProperty( "password" , password);
             // 保存文件
             pro.store(fos, "info.properties" );
             // 关闭输出流对象
             fos.close();
             return true ;
         } catch (Exception e) {
             throw new RuntimeException();
         }
     }

读取属性文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
      * 返回属性文件对象
      *
      * @param context 上下文
      * @return
      */
     public static Properties getProObject(Context context) {
         try {
             // 创建File对象
             File file = new File(context.getFilesDir(), "info.properties" );
             // 创建FileIutputStream 对象
             FileInputStream fis = new FileInputStream(file);
             // 创建属性对象
             Properties pro = new Properties();
             // 加载文件
             pro.load(fis);
             // 关闭输入流对象
             fis.close();
             return pro;
         } catch (Exception e) {
             e.printStackTrace();
             return null ;
         }
     }


在主方法中调用即可

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 获取属性文件对象
          Properties pro=LoginService.readSDCard( this );
         // 获取用户名或密码
         if ( null != pro) {
             String username=pro.getProperty( "username" );
             String password=pro.getProperty( "password" );
             // 如果获取到的用户名或密码不为空,则设置到文本框中
             if (!TextUtils.isEmpty(username) && !TextUtils.isEmpty(password)) {
                 // 设置用户名
                 etUsername.setText(username);
                 // 设置密码
                 etPassword.setText(password);
             }
         }

第三种:

使用SharedPreferences保存用户名和密码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
      * 使用SharedPreferences保存用户登录信息
      * @param context
      * @param username
      * @param password
      */
     public static void saveLoginInfo(Context context,String username,String password){
         //获取SharedPreferences对象
         SharedPreferences sharedPre=context.getSharedPreferences( "config" , context.MODE_PRIVATE);
         //获取Editor对象
         Editor editor=sharedPre.edit();
         //设置参数
         editor.putString( "username" , username);
         editor.putString( "password" , password);
         //提交
         editor.commit();
     }


在主方法中读取:

?
1
2
3
SharedPreferences sharedPre=getSharedPreferences( "config" , MODE_PRIVATE);
         String username=sharedPre.getString( "username" , "" );
         String password=sharedPre.getString( "password" , "" );


使用普通txt文件与属性文件保存都是保存到内部存储设备中,我们也可以保存的SDCard中,使用Android提供的Environment类就可以获取到外部存储设备

?
1
File file= new File(Environment.getExternalStorageDirectory(), "info.properties" );

如果要使用绝对路径

?
1
File file = new File( "/sdcard/info.properties" );

最后就是需要添加权限,因为获取外部存储设备是有关安全的,所以需要添加相关的权限

?
1
<uses-permission android:name= "android.permission.WRITE_EXTERNAL_STORAGE" ></uses-permission>

使用这几种方法就可以实现保存用户名和密码这个功能了,至于有没有其他的方法,我想这几种应该就够用了

Android实现记住用户名和密码的功能 (附完整源码) Android实现记住用户名和密码的功能 (附完整源码) 阅读详情

相关推荐

android搜索历史记录提示,在edittext输入框中输入,会在本地保存,下次输入会自动提示.zip

Android高级应用源码-android搜索历史记录提示,在edittext输入框中输入,会在本地保存,下次输入会自动提示.zip

Android保存用户名和密码

转自:http://www.2cto.com/kf/201401/272336.html 我们不管在开发一个项目或者使用别人的项目,都有用户登录功能,为了让用户的体验效果更好,我们通常会做一个功能,叫做保存用户,这样做的目地就是为了让用户下一次再使用该程序不会重新输入用户名和密码,这里我使用3种方式来存储用户名和密码 1、通过普通 的txt文本存储 2、通过properties属性文件进...

dcj3sjt126com的专栏 626

基于ROS下的安卓手机图像和IMU跑ORB-SLAM3

接之前文章继续,手上没有现成的单目+IMU硬件,但是安卓手机几乎人人都有。因此,本文讲下如何用手机跑ORB-SLAM3的Mono和Mono_Inertial。 1. 手机与PC通信 基于ROS下的信息发布和订阅,手机和PC在一个局域网下进行信息(image和IMU)传输。 手机APK参考了github上的2个开源Android_Camera-IMU和android_ros_sensors,基于ros_java生成安卓APP,下载安装任一个APP到安卓手机,界面分别是这样: 手机和PC连一个无

h_372101的博客 1万+

【Android开发基础】使用SharedPreferences保存用户名和密码的方法的记住密码(功能模块)

描述:使用SharedPreferences保存用户名和密码的方法,并且存在一个CheckBox复选框可以用以记住密码 难度:初级 知识点:SharedPreferences、CheckBox的使用

守夜人 881

深度学习batch、batch_size、epoch、iteration以及小样本中episode、support set、query set关系

训练整个数据集是epoch、把数据集分为多少小块就是batch,每个小块(batch)多少个数据就是batch_size,整个数据集需要训练多少轮是iteration

qq_42740834的博客 1610

DC-DC 转换器中的压电谐振器:当前状态和限制

在功率转换器应用中,居里温度较低的谐振器的 k 2和 Q M显着降低会导致效率降低,需要仔细的热处理。由于使用 PR 的功率转换器在不同的条件下运行,包括温度范围、电压偏置和功率电平,因此不可避免地会出现非线性效应,必须妥善解决这一问题,以免影响转换器的性能。等效电路模型(Butterworth Van-Dyke 或 BVD 模型)将压电谐振器在其机械谐振附近的电响应转换为一个简单电路,该电路由与由电极形成的输入电容 C 0并联的串联 RLC 动分支组成,见图图 1 还显示了阻抗与频率的关系。

2301_79716471的博客 1295

Android实现简单的保存密码功能

一、简介 一个小案例,将用户输入的用户名和密码保存成txt格式文件,下次打开的时候从本地缓存中读取。使用的是字符流保存。用的是明文存储账号密码,在真实商业应用中是不会这样做的,这个案例只是为了介绍字符流如何操作。 二、案例实现(代码如下) 1.搭建UI <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:an...

a451319296的博客 2230

【AI编程】Cursor编程工具使用教程:下载、配置、使用、运行Java项目

【AI编程】Cursor编程工具使用教程:下载、配置、使用、运行Java项目

funfan的博客 5196

android保存登录用户名和密码错误,android开发用户名密码如何记住

在安卓开发中,我们做用户登录的时候需要将用户名和密码保存,下次打开的时候记住应户名和密码,也就是记住用户名和密码。关于记住用户名和密码的保存方式有多种,这里介绍SharaedPreferenses保存方式。这种保存方式主要是以XML的格式来保存文件的,在开发中的explorer中可以看见。下面看一个小例子,主要是代码,希望对开发者有所帮助:实现的主要代码:private EditText user...

weixin_29091445的博客 559

C# Socket通信从入门到精通(14)——多个异步UDP客户端C#代码实现(史上最全)

本文详细介绍了Socket通信中多个异步Udp客户端功能的实现、介绍如何使用多个客户端与多个服务器进行数据的交互,包含连接服务器、断开服务器、发送数据、读取数据、C#代码实现,由高级工程师多年经验总结而成,绝对干货!

qq_34059233的博客 1982

把注释掉的代码删除掉:在 SAP ABAP 团队里打造可回溯、可测试、可演进的代码库

摘要 SAP ABAP项目中常见的"注释掉代码"反模式存在严重隐患:它增加代码噪音,制造虚假安全感,并可能引发安全和合规风险。Clean ABAP指南明确建议删除这类代码,理由包括: 版本控制系统已提供完整历史回溯能力 注释代码会误导开发者,增加理解成本 临时禁用需求应通过Feature Toggle实现 必须保留的参考代码应放入$TMP等隔离区域 团队应建立自动化检查机制,将"删除注释代码"纳入工程规范,确保代码库只表达当前有效的行为逻辑。在AI时代,可以利用工具辅

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2449

Android开发基础,保存用户输入的用户名和密码

activity_main.xml布局文件(2017-11-9) <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"

funvDJ999的博客 2876

数据分析案例-2024 年全电动汽车数据集可视化分析

本数据集来源于Kaggle,原始数据集共有177866条数据,17个变量。该数据集显示了目前通过华盛顿州许可部 (DOL) 注册的电池电动汽车 (BEV) 和插电式混合动力电动汽车 (PHEV)。电池电动汽车 (BEV) 是一种全电动汽车,使用一个或多个电池来存储电能,为电机提供动力,并通过将车辆插入电源进行充电。插电式混合动力汽车 (PHEV) 是一种使用一个或多个电池为电动机提供动力的车辆;使用另一种燃料,例如汽油或柴油,为内燃机或其他推进源提供动力;并通过将车辆插入电源来充电。

m0_64336780的博客 1万+

android开发时保存用户名和密码

//在Oncreate里面调用 //当点击登录时获取文本框的password和account,将他们进行存储 SharedPreferences remdname=getPreferences(Activity.MODE_PRIVATE);//实例化SharedPreferences SharedPreferences.Editor edit=remdname.edit();//实例化Edito

baidu_31571123的博客 489

PS射击游戏射线检测优化:原理、工程与全链路高性能实现

射线池:减少GC,提升批量检测效率。分层检测:先粗后细,远距离射击高效判定。批量检测:并行处理,适合大量射线场景。空间结构:进一步加速大场景检测。下面继续深入射线检测优化,补充更多实用细节和进阶技巧,包括空间分区加速、射线检测多线程/异步化、射线合并与分帧、射线池通用模板、常见性能陷阱与调优建议等。对于极端性能需求,可自定义轻量级物理系统,仅检测关键对象(如玩家、子弹),跳过复杂物理引擎。结合AABB、OBB、球体等简单碰撞体,射线-包围体检测极快。空间分区+分层检测是大场景射线优化核心。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 434

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

android开发用户名密码如何记住

在安卓开发中,我们做用户登录的时候需要将用户名和密码保存,下次打开的时候记住应户名和密码,也就是记住用户名和密码。关于记住用户名和密码的保存方式有多种,这里介绍SharaedPreferenses保存方式。 这种保存方式主要是以XML的格式来保存文件的,在开发中的explorer中可以看见。...

chongwo8762的博客 212

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

android 腾讯微博授权,android腾讯微博开发06-SQLite保存用户授权后的用户名和密码及其他一些信息...

(一)Model微博用户类package com.xgh.tencent.weibo.beans;public class BUser {public Integer id; //唯一标识public Stringuid;//微博用户idpublic String name; //微博用户名public String nick; //微博用户昵称public String accessToken...

weixin_42149145的博客 193

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

android SharedPreferences实现用户的注册和保存账号密码

在android开发中,我们做用户登录和注册的时候需要将用户名和密码保存,下次打开的时候记住应户名和密码。关于注册保存用户密码的方式和记住用户名和密码的保存方式有多种,这里介绍SharaedPreferenses保存方式。SharaedPreferenses是使用键值对的方式来存储数据的,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/dat

chenfengdejuanlian的专栏 1万+

android在哪存储当前用户名和密码,Android——用户登陆及用户名和密码的保存

目录一、Android下的Junit测试在实际开发中,开发android软件的过程需要不断地进行测试。而使用Junit测试框架,侧是正规Android开发的必用技术,在Junit中可以得到组件,可以模拟发送事件和检测程序处理的正确性。首先建立一个新的Android项目,这里我命名为:junit,然后编写AndroidManifest.xml文件,在里面添加uses-library和instrume...

weixin_30527151的博客 2176

(十)android 中数据存储与访问——使用SharedPreferences保存数据

10.1SharedPreferences概述 数据存储方式有五种,前面介绍的是通过IO流以文件的方式存储数据,这里学习的SharedPreferences方式保存的数据,主要保存的是用户的偏好设置. 很多时候,我们开发的程序是需要向用户提供软件参数设置功能的。用户根据自己的兴趣爱好对软件的各项参数进行配置,以符合自己的使用习惯。 例如,我们使用eclipse的时候,...

a7m8111的博客 227

android开发登录注册界面,Android Studio3.5开发登录注册界面

在郑州app开发时候,用到开发用户登录的界面,专门把代码整理出来。Android Studio3.5开发登录注册界面如下:、具体实现步骤如下,第一步是画出界面,就是在activity_main.xml画出组件,然后排列好顺序,具体代码如下:上面是布局的代码,接着就开始java的代码了,具体代码如下:protected void onCreate(Bundle savedInstanceState)...

weixin_39991531的博客 792

移动应用开发--实现QQ登录界面(Android)

移动应用开发–实现微博界面 实验目的 1、掌握Android中布局的概念和用法。 2、熟练掌握Android中Button、ImageView、EditText、Listview的基本使用。 3、重点掌握Listview循环引用以及对仗模式的用法。

杜小白Blog 3837

Android 登陆界面

利用android编写的可记住用户名和密码并能制动登陆的登陆界面。 MainActivity.java文件 public class MainActivity extends Activity { private EditText mEtUserName; //账号 private EditText mEtPassWord; //密码

g3597的博客 1248

android数据永久保存,Android 永久保存简单数据

转载:http://blog.youkuaiyun.com/xzlawin/article/details/45959033方法1:存数据:SharedPreferences userInfo = this.getSharedPreferences("user_info", 0);userInfo.edit().putString("name", nameet.getText().toString()).c...

weixin_28850145的博客 417

android 文件存储

1、使用共享文件存储(sharedpreference) 存储的内容以键值对的形式保存在应用包名下,只能存储字符串,整型,布尔等基本类型数据,使用场景如登录后保存账户密码、保存点击的状态等。 使用方式: 1)保存数据: SharedPreferences.Editor editor = getSharedPreferences(“data”,MODE_PRIVATE).edit(); editor...

libaitian3333的博客 173

android 下载网页代码怎么写,Android实现读写本地文件

SharedPreferencespackage com.pb.android_107_7_01;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import android.os.Bundle...

weixin_35931397的博客 199
上一篇: 在Android中去掉标题栏
下一篇: Android volley 完全解析
Jimven的博客
博客等级 码龄10年 27粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值