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 相关文章推荐
详解SpringBoot异常处理流程及原理
Jun 21 Java/Android
详解Spring事件发布与监听机制
Jun 30 Java/Android
Java实现多文件上传功能
Jun 30 Java/Android
Java 在线考试云平台的实现
Nov 23 Java/Android
Java使用JMeter进行高并发测试
Nov 23 Java/Android
Java如何实现通过键盘输入一个数组
Feb 15 Java/Android
你知道Java Spring的两种事务吗
Mar 16 Java/Android
spring cloud eureka 服务启动失败的原因分析及解决方法
Mar 17 Java/Android
剑指Offer之Java算法习题精讲二叉树专项训练
Mar 21 Java/Android
Spring Security动态权限的实现方法详解
Jun 16 Java/Android
spring boot实现文件上传
Aug 14 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
需要发散思维学习PHP
2009/06/29 PHP
php中curl和file_get_content的区别
2014/05/10 PHP
PHP访问Google Search API的方法
2015/03/05 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
2015/09/10 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
2017/02/03 PHP
YII2框架中behavior行为的理解与使用方法示例
2020/03/13 PHP
脚本吧 - 幻宇工作室用到js,超强推荐share.js
2006/12/23 Javascript
javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法
2009/03/21 Javascript
基于jquery的loading 加载提示效果实现代码
2011/09/01 Javascript
JQuery标签页效果的两个实例讲解(4)
2015/09/17 Javascript
ReactNative短信验证码倒计时控件的实现代码
2017/07/20 Javascript
在vue中添加Echarts图表的基本使用教程
2017/11/22 Javascript
Vue 框架之动态绑定 css 样式实例分析
2018/11/14 Javascript
详解微信小程序图片地扯转base64解决方案
2019/08/18 Javascript
JavaScript中变量提升和函数提升的详解
2020/08/07 Javascript
Vue.extend 登录注册模态框的实现
2020/12/29 Vue.js
[03:09]DOTA2亚洲邀请赛 LGD战队出场宣传片
2015/02/07 DOTA
wxpython中利用线程防止假死的实现方法
2014/08/11 Python
Python多重继承的方法解析执行顺序实例分析
2018/05/26 Python
centos7中安装python3.6.4的教程
2019/12/11 Python
python读取多层嵌套文件夹中的文件实例
2020/02/27 Python
Django查询优化及ajax编码格式原理解析
2020/03/25 Python
python如何调用字典的key
2020/05/25 Python
CSS3使用transition属性实现过渡效果
2018/04/18 HTML / CSS
怎样实现H5+CSS3手指滑动切换图片的示例代码
2019/05/05 HTML / CSS
Origins悦木之源英国官网:雅诗兰黛集团高端植物护肤品牌
2017/11/06 全球购物
英国时尚优质的女装:Hope Fashion
2018/08/14 全球购物
英国家电购物网站:Sonic Direct
2019/03/26 全球购物
法雷奥SQA(electric)面试问题
2016/01/23 面试题
《童年的发现》教学反思
2014/02/14 职场文书
《蝙蝠和雷达》教学反思
2014/04/23 职场文书
职员竞岗演讲稿
2014/05/14 职场文书
法学院毕业生求职信
2014/06/25 职场文书
事业单位年度考核评语
2014/12/31 职场文书
瞿秋白纪念馆观后感
2015/06/10 职场文书
MySQL 计算连续登录天数
2022/05/11 MySQL