Android实现简单的保存密码功能
一、简介
一个小案例,将用户输入的用户名和密码保存成txt格式文件,下次打开的时候从本地缓存中读取。使用的是字符流保存。用的是明文存储账号密码,在真实商业应用中是不会这样做的,这个案例只是为了介绍字符流如何操作。
二、案例实现(代码如下)
1.搭建UI
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayoutxmlns: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"><EditTextandroid:id="@+id/et_username"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:ems="10"android:hint="请输入用户名"android:inputType="textPersonName"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.497"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><EditTextandroid:id="@+id/et_password"android:layout_width="0dp"android:layout_height="wrap_content"android:ems="10"android:inputType="textPassword"android:hint="请输入密码"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/et_username" /><CheckBoxandroid:id="@+id/checkBox"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:text="记住密码"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/et_password" /><Buttonandroid:id="@+id/bt_login"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginStart="10dp"android:layout_marginLeft="10dp"android:layout_marginTop="12dp"android:layout_marginEnd="10dp"android:layout_marginRight="10dp"android:text="安全登录"android:onClick="OnClickButton"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.0"app:layout_constraintStart_toEndOf="@+id/checkBox"app:layout_constraintTop_toBottomOf="@+id/et_password" />
</androidx.constraintlayout.widget.ConstraintLayout>
2.业务逻辑
package com.hiscene.test03;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;public class MainActivity extends AppCompatActivity {private EditText et_username;private EditText et_password;private CheckBox checkBox;private final String usertxtname="user.txt";private File fileDir;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.login);fileDir=MainActivity.this.getFilesDir();et_username=findViewById(R.id.et_username);et_password=findViewById(R.id.et_password);checkBox=findViewById(R.id.checkBox);LoadCacheUserInfo();}//按钮点击事件public void OnClickButton(View view){if (view.getId() == R.id.bt_login) {String userName = et_username.getText().toString().trim();String password = et_password.getText().toString().trim();Login(userName, password);}}//登录private void Login(String userName,String password) {if (TextUtils.isEmpty(userName) || TextUtils.isEmpty(password)) {Toast.makeText(MainActivity.this, "用户名和密码不能为空!", Toast.LENGTH_LONG).show();} else {//链接服务器进行登录验证Todo....if (checkBox.isChecked()) SaveUserInfo(userName, password);}}//保存用户信息private void SaveUserInfo(String userName,String password) {File file = new File(fileDir,usertxtname);try {OutputStream out = new FileOutputStream(file);OutputStreamWriter osw = new OutputStreamWriter(out, "UTF-8");BufferedWriter writer = new BufferedWriter(osw);writer.write(userName + "#" + password);writer.flush();writer.close();} catch (Exception e) {e.printStackTrace();}}//获取缓存中的用户数据private void LoadCacheUserInfo(){File file = new File(fileDir,usertxtname);if (!file.exists())return;try {FileReader reader =new FileReader(file);BufferedReader br=new BufferedReader(reader);String text=br.readLine();String[] arr=text.split("#");et_username.setText(arr[0]);et_password.setText(arr[1]);checkBox.setChecked(true);br.close();}catch (Exception e){e.printStackTrace();}}
}
源码下载:链接:https://pan.baidu.com/s/1ncgNCem4OnL8ixWQ_4VWSA 密码:c05e
Android实现简单的保存密码功能相关推荐
- php js记住密码功能,jquery.cookie.js实现用户登录保存密码功能的方法_jquery
本文实例讲述了jquery.cookie.js实现用户登录保存密码功能的方法.分享给大家供大家参考,具体如下: 需要导入的js有jquery.js和jquery.cookie.js 在页面加载时首先尝 ...
- android实现打电话功能,Android之简单实现拨打电话功能的方法
手机在我们的日常生活中是最常见的,它的功能是拨打电话和发送短信,那么在Android开发中,我们如何通过该程序拨打电话呢?爱站技术频道给出了Android之简单实现拨打电话功能的方法,一起来看看吧! ...
- 修改注册表禁用edge浏览器保存密码功能
打开注册表\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge目录,创建Dword(32位)数值,名称PasswordManagerEnabled, ...
- android如何实现用户注册功能,Android 实现简单的登录注册功能(SharedPreferences和SQLite)...
最近恰好作了一个Android的登陆注册界面,将数据利用SharedPreferences或者SQLite绑定到Android程序中,实现简单的登录注册功能,本文未涉及到与服务器的交流.java 首先 ...
- Android 实现简单的登陆注册功能(SharedPreferences和SQLite)
最近刚好做了一个Android的登录注册界面,将数据利用SharedPreferences或者SQLite绑定到Android程序中,实现简单的登陆注册功能,本文未涉及到与服务器的交流. 首先,对于登 ...
- Android 实现简单的锁屏功能
写正题之前先闲扯几句.因为前段时间自己的手机电源键不灵,所以手机不能及时锁屏,一度让我很苦恼,后来通过在系统设置找到一个另类的方法,设置让音量键锁屏,最终也解决了问题,但是觉得还是不够爽,作为程序员, ...
- Android实现简单的进度条功能
实现进度条首先就要知道[AsyncTask],异步任务类 这里推荐这个大佬写的文章,写的很不错 详解Android中AsyncTask的使用 1.xml布局 声明一个显示,两个按钮,一个进度条 < ...
- Android打电话功能权限报错,Android实现简单的拨号器功能
简易拨号器的制作方法,具体如下 一.布局构造 android:layout_width="match_parent" android:layout_height="mat ...
- SharedPreferences实现记住密码功能
aredPerferences 简单介绍 用于保存简单的键值对数据: 它将数据放在 /data/data/<package name>/shared_prefs目录下,用xml文件保存MA ...
最新文章
- 目标识别的选择性搜索
- 在ASP.NET中实现Url Rewriting
- 给Ocelot做一个Docker 镜像
- wordpress 拾遗
- python怎么处理文字_使用python进行简单的文本处理
- 1321. Robot
- Linux常用命令4(grep、df、du、awk、su、ll)
- TensorFlow神经网络:模块化的神经网络八股
- Ext 中使用Ajax
- 读取android项目assets目录下的txt文件.
- matlab实现马尔可夫链,马尔可夫链matlab源码
- FPGA / IC 设计(一)
- vue 移动端进入页面自动弹出软键盘
- Cobbler自动部署CentOS系统
- typescript全局安装卸载以及npm相关问题
- go之官方依赖管理工具dep安装和使用
- Python错误日志
- 系统渗透与防护——网络安全
- RC复位电路上二极管的作用
- 【学习】从零开发的Android音视频开发(13)——MediaCodec到OMX框架过程及其硬解码
热门文章
- 最实用的vue刷新当前页面,provide / inject 组合 方式实现vue页面刷新
- 施一公:我直到博士毕业,对研究也没兴趣!很迷茫,不知道将来干什么...
- 云服务器配置jupyter
- 【厦门大学】考研初试复试资料分享
- 2020年电工(初级)新版试题及电工(初级)模拟考试题库
- 智能门锁--配置硬件
- Python:随机生成多个两位数加减混合运算计算式
- 【基础篇】java的多态到底是什么?(详细案例逐步分析)
- eclipse内存设置Linux,Eclipse CDT Linux下内存分析 补记
- 西门子200smart型PLC通过485modbus通讯控制台达VDF—M型变频器程序