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 相关文章推荐
总结一些Java常用的加密算法
Jun 11 Java/Android
解决Maven项目中 Invalid bound statement 无效的绑定问题
Jun 15 Java/Android
新手入门Jvm-- JVM对象创建与内存分配机制
Jun 18 Java/Android
Feign调用传输文件异常的解决
Jun 24 Java/Android
一篇文章带你学习Mybatis-Plus(新手入门)
Aug 02 Java/Android
Springboot如何同时装配两个相同类型数据库
Nov 17 Java/Android
Mybatis是这样防止sql注入的
Dec 06 Java/Android
springboot用户数据修改的详细实现
Apr 06 Java/Android
Java Lambda表达式常用的函数式接口
Apr 07 Java/Android
mybatis-plus模糊查询指定字段
Apr 28 Java/Android
Android 中的类文件和类加载器详情
Jun 05 Java/Android
Java中的Kotlin 内部类原理
Jun 16 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
用PHP和ACCESS写聊天室(十)
2006/10/09 PHP
php记录日志的实现代码
2011/08/08 PHP
解析PHP生成静态html文件的三种方法
2013/06/18 PHP
PHP正则验证字符串是否为数字的两种方法并附常用正则
2019/02/27 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
2020/11/10 PHP
关于文本框的一些限制控制总结~~
2010/04/15 Javascript
javascript中最常用的继承模式 组合继承
2010/08/12 Javascript
js获取html文件的思路及示例
2013/09/17 Javascript
Javascript写入txt和读取txt文件示例
2014/02/12 Javascript
搭建pomelo 开发环境
2014/06/24 Javascript
快速入门Vue
2016/12/19 Javascript
Vue2.0组件间数据传递示例
2017/03/07 Javascript
详解Vue中添加过渡效果
2017/03/20 Javascript
在vue组件中使用axios的方法
2018/03/16 Javascript
React为 Vue 引入容器组件和展示组件的教程详解
2018/05/03 Javascript
JS与jQuery判断文本框还剩多少字符可以输入的方法
2018/09/01 jQuery
Vue中使用canvas方法总结
2019/02/12 Javascript
layui实现下拉框三级联动
2019/07/26 Javascript
javascript-hashchange事件和历史状态管理实例分析
2020/04/18 Javascript
解决vue单页面应用打包后相对路径、绝对路径相关问题
2020/08/14 Javascript
[00:20]DOTA2荣耀之路7:-ah fu-抢盾
2018/05/31 DOTA
Python入门教程之运算符与控制流
2016/08/17 Python
单链表反转python实现代码示例
2018/02/08 Python
基于python批量处理dat文件及科学计算方法详解
2018/05/08 Python
python ddt数据驱动最简实例代码
2019/02/22 Python
python英语单词测试小程序代码实例
2019/09/09 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
2019/09/16 Python
python3爬虫中多线程进行解锁操作实例
2020/11/25 Python
Lookfantastic阿联酋官网:英国知名美妆护肤购物网站
2020/05/26 全球购物
将"引用"作为函数参数有哪些特点
2013/04/05 面试题
小型女装店的创业计划书
2014/01/09 职场文书
干部考察材料范文
2014/12/24 职场文书
煤矿安全生产管理协议书
2016/03/22 职场文书
党组织关系的介绍信模板
2019/06/21 职场文书
浅谈golang 中time.After释放的问题
2021/05/05 Golang
Java 泛型详解(超详细的java泛型方法解析)
2021/07/02 Java/Android