Android开发 使用文件储存的方式保存QQ密码


Posted in Java/Android onApril 24, 2022

技术要点:

使用文件储存的方式保存数据

实现步骤:

①用户交互界面的设计与实现
②工具类(FileSaveQQjava )的设计与实现
③界面逻辑代码的设计与实现

页面布局:Android开发实现极为简单的QQ登录页面

MainActivity.java代码:

package com.example.saverqq;
import androidx.appcompat.app.AppCompatActivity;
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 java.util.Map;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private Button etLogin;
    private EditText etPassword;
    private EditText etNumber;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化view
        initView();
        //如果用户已经保存过就进行数据回显
        Map<String, String> userInfo = FileSaveQQ.getUserInfo(this);
        if (userInfo!=null) {
            etNumber.setText(userInfo.get("number"));
            etPassword.setText(userInfo.get("password"));
        }
    }
    private void initView() {
//初始化控件
        etNumber = (EditText) findViewById(R.id.et_number);
        etPassword = (EditText) findViewById(R.id.et_password);
        etLogin = (Button) findViewById(R.id.btn_login);
        //设置按钮点击事件
        etLogin.setOnClickListener(this);
    }
    @Override
    public void onClick(View view) {
        //点击按钮获取账号密码
        String number = etNumber.getText().toString().trim();
        String password = etPassword.getText().toString().trim();
        if (TextUtils.isEmpty(number)) {
            Toast.makeText(this, "请输入QQ账号", Toast.LENGTH_LONG).show();
            return;
        }
        if (TextUtils.isEmpty(password)) {
            Toast.makeText(this, "请输入QQ密码", Toast.LENGTH_LONG).show();
            return;
        }
        Toast.makeText(this, "登录成功", Toast.LENGTH_LONG).show();
//保存用户信息
        boolean isSaveSucess = FileSaveQQ.saveUserInfo(this, number, password);
        if (isSaveSucess) {
            Toast.makeText(this, "保存成功", Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(this, "保存失败", Toast.LENGTH_LONG).show();
        }
    }
}

FileSaveQQ.java文件代码:

package com.example.saverqq;
import android.content.Context;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.HashMap;
import java.util.Map;
public class FileSaveQQ {
    //保存用户信息
    public static boolean saveUserInfo(Context context, String number, String password) {
        try {
            //通过上下流获取文件输出流
            FileOutputStream fos = context.openFileOutput("data.txt", context.MODE_PRIVATE);
            //把数据写到文件中
            fos.write((number + ":" + password).getBytes());
            fos.close();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }
    //从data.txt文件中读取QQ账号和密码
    public static Map<String, String> getUserInfo(Context context) {
        String content = "";
        try {
            FileInputStream fis = context.openFileInput("data.txt");
            byte[] buffer = new byte[fis.available()];//设置缓冲区的大小
            fis.read(buffer);//读到缓冲区
            Map<String, String> userMap = new HashMap<String, String>();
            content=new String(buffer);
            String[] infos = content.split(":");//以 :切割字符串
            userMap.put("number", infos[0]);
            userMap.put("password", infos[1]);
            fis.close();
            return userMap;
        } catch (Exception e) {
            return null;
        }
    }
}

参考图书《Android移动开发基础案例教程》


Tags in this post...

Java/Android 相关文章推荐
详解Spring Boot使用系统参数表提升系统的灵活性
Jun 30 Java/Android
java实现对Hadoop的操作
Jul 01 Java/Android
Mybatis-plus在项目中的简单应用
Jul 01 Java/Android
Spring Security中用JWT退出登录时遇到的坑
Oct 16 Java/Android
Java8中Stream的一些神操作
Nov 02 Java/Android
java协程框架quasar和kotlin中的协程对比分析
Feb 24 Java/Android
Java 垃圾回收超详细讲解记忆集和卡表
Apr 08 Java/Android
零基础学java之方法的定义与调用详解
Apr 10 Java/Android
Ubuntu18.04下QT开发Android无法连接设备问题解决实现
Jun 01 Java/Android
springboot实现string转json json里面带数组
Jun 16 Java/Android
MyBatis在注解上使用动态SQL方式(@select使用if)
Jul 07 Java/Android
java获取一个文本文件的编码(格式)信息
Sep 23 Java/Android
IDEA 2022 Translation 未知错误 翻译文档失败
Android开发实现极为简单的QQ登录页面
Flutter Navigator 实现路由传递参数
Apr 22 #Java/Android
SpringBoot 集成短信和邮件 以阿里云短信服务为例
Java设计模式之代理模式
Apr 22 #Java/Android
Java工作中实用的代码优化技巧分享
Apr 21 #Java/Android
Spring Boot接口定义和全局异常统一处理
Apr 20 #Java/Android
You might like
zf框架的数据库追踪器使用示例
2014/03/13 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
2016/02/15 PHP
使用php实现从身份证中提取生日
2016/05/09 PHP
php使用CutyCapt实现网页截图保存的方法
2016/10/03 PHP
Yii2数据库操作常用方法小结
2017/05/04 PHP
另一个javascript小测验(代码集合)
2011/07/27 Javascript
前端开发过程中浏览器版本的两种判定方法
2013/10/30 Javascript
js计算文本框输入的字符数
2015/10/23 Javascript
使用JavaScript为Kindeditor自定义按钮增加Audio标签
2016/03/18 Javascript
js时间查询插件使用详解
2017/04/07 Javascript
weex slider实现滑动底部导航功能
2017/08/28 Javascript
zTree异步加载展开第一级节点的实现方法
2017/09/05 Javascript
微信小程序实现左右列表联动
2020/05/19 Javascript
JavaScript 如何在浏览器中使用摄像头
2020/12/02 Javascript
[43:43]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第三场 11.29
2020/12/02 DOTA
Python中dictionary items()系列函数的用法实例
2014/08/21 Python
跟老齐学Python之眼花缭乱的运算符
2014/09/14 Python
Python中Django 后台自定义表单控件
2017/03/28 Python
Python3实现的简单验证码识别功能示例
2018/05/02 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
2019/08/05 Python
python中如何写类
2020/06/29 Python
html5 video全屏播放/自动播放的实现示例
2020/08/06 HTML / CSS
DERMAdoctor官网:美国著名皮肤护理品牌
2019/07/06 全球购物
美国厨房和园艺工具网上商店:Nestneed
2019/08/24 全球购物
枚举和一组预处理的#define有什么不同
2016/09/21 面试题
Linux如何为某个操作添加别名
2013/03/01 面试题
体育运动口号
2014/06/09 职场文书
运动员获奖感言
2014/08/15 职场文书
学习张丽丽心得体会
2014/09/03 职场文书
关于九一八事变的演讲稿2014
2014/09/17 职场文书
学术会议邀请函
2015/01/30 职场文书
党员志愿者服务倡议书
2015/04/29 职场文书
课题研究阶段性总结
2015/08/13 职场文书
【海涛教你打DOTA】黑鸟第一视角解说
2022/04/01 DOTA
html中两种获取标签内的值的方法
2022/06/10 HTML / CSS
MyBatis XPathParser解析器使用范例详解
2022/07/15 Java/Android