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中Collection的一些常用方法总结
Jun 13 Java/Android
SpringBoot项目中控制台日志的保存配置操作
Jun 18 Java/Android
Java如何实现树的同构?
Jun 22 Java/Android
Netty结合Protobuf进行编解码的方法
Jun 26 Java/Android
Java中使用Filter过滤器的方法
Jun 28 Java/Android
Maven学习----Maven安装与环境变量配置教程
Jun 29 Java/Android
springboot临时文件存储目录配置方式
Jul 01 Java/Android
SpringBoot整合Mybatis Generator自动生成代码
Aug 23 Java/Android
使用logback实现按自己的需求打印日志到自定义的文件里
Aug 30 Java/Android
Java数据开发辅助工具Docker与普通程序使用方法
Sep 15 Java/Android
MyBatis-Plus 批量插入数据的操作方法
Sep 25 Java/Android
Java 在生活中的 10 大应用
Nov 02 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定时自动生成静态HTML的实现代码
2010/06/20 PHP
PHP实现的简单组词算法示例
2018/04/10 PHP
基于PHP的微信公众号的开发流程详解
2020/08/07 PHP
通用javascript脚本函数库 方便开发
2009/10/13 Javascript
在一个浏览器里呈现所有浏览器测试结果的前端测试工具的思路
2010/03/02 Javascript
Jquery升级新版本后选择器的语法问题
2010/06/02 Javascript
jquery实现的一个文章自定义分段显示功能
2014/05/23 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
2015/03/04 Javascript
js实现下拉列表选中某个值的方法(3种方法)
2015/12/17 Javascript
基于JavaScript实现类名的添加与移除
2017/04/23 Javascript
Angular 通过注入 $location 获取与修改当前页面URL的实例
2017/05/31 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
解决微信小程序防止无法回到主页的问题
2018/09/28 Javascript
JS数组求和的常用方法实例小结
2019/01/07 Javascript
angular中如何绑定iframe中src的方法
2019/02/01 Javascript
nodejs+koa2 实现模仿springMVC框架
2020/10/21 NodeJs
[39:32]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第二场
2014/05/23 DOTA
Python 编码Basic Auth使用方法简单实例
2017/05/25 Python
python获取外网IP并发邮件的实现方法
2017/10/01 Python
使用python和Django完成博客数据库的迁移方法
2018/01/05 Python
Python中.join()和os.path.join()两个函数的用法详解
2018/06/11 Python
在PyCharm中实现添加快捷模块
2020/02/12 Python
详解Python中第三方库Faker
2020/09/25 Python
Python实现给PDF添加水印的方法
2021/01/25 Python
UNIX文件系统常用命令
2012/05/25 面试题
聚美优品励志广告词
2014/03/14 职场文书
医疗专业毕业生求职信
2014/08/28 职场文书
光棍节联谊晚会活动策划书
2014/10/10 职场文书
2014年销售工作总结
2014/12/01 职场文书
优秀共产党员推荐材料
2014/12/18 职场文书
开业典礼致辞
2015/07/29 职场文书
PHP判断是否是json字符串
2021/04/01 PHP
python实现简单反弹球游戏
2021/04/12 Python
Django debug为True时,css加载失败的解决方案
2021/04/24 Python
MySQL CHAR和VARCHAR该如何选择
2021/05/31 MySQL
python中的random模块和相关函数详解
2022/04/22 Python