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将文件打包成zip存放或导出
Jun 11 Java/Android
Java用自带的Image IO给图片添加水印
Jun 15 Java/Android
浅谈@Value和@Bean的执行顺序问题
Jun 16 Java/Android
springBoot基于webSocket实现扫码登录
Jun 22 Java/Android
IDEA使用SpringAssistant插件创建SpringCloud项目
Jun 23 Java/Android
Java基础之详解HashSet的使用方法
Jun 30 Java/Android
JavaWeb 入门篇:创建Web项目,Idea配置tomcat
Jul 16 Java/Android
Java获取e.printStackTrace()打印的信息方式
Aug 07 Java/Android
详解Java七大阻塞队列之SynchronousQueue
Sep 04 Java/Android
Android Studio实现简易进制转换计算器
May 20 Java/Android
Java中生成微信小程序太阳码的实现方案
Jun 01 Java/Android
Android实现图片九宫格
Jun 28 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
JAVA/JSP学习系列之四
2006/10/09 PHP
十天学会php之第九天
2006/10/09 PHP
PHP中使用mpdf 导出PDF文件的实现方法
2018/10/22 PHP
php模拟实现斗地主发牌
2020/04/22 PHP
IE DOM实现存在的部分问题及解决方法
2009/07/25 Javascript
js trim函数 去空格函数与正则集锦
2009/11/20 Javascript
EXTJS FORM HIDDEN TEXTFIELD 赋值 使用value不好用的问题
2011/04/16 Javascript
js判断一个元素是否为另一个元素的子元素的代码
2012/03/21 Javascript
javascript实现iframe框架延时加载的方法
2014/10/30 Javascript
浅谈Nodejs观察者模式
2015/10/13 NodeJs
AngularJS HTML DOM详解及示例代码
2016/08/17 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
vue中使用input[type=&quot;file&quot;]实现文件上传功能
2018/09/10 Javascript
在Vue中用canvas实现二维码和图片合成海报的方法
2019/06/10 Javascript
JS实现盒子拖拽效果
2020/02/06 Javascript
在Vue.js中使用TypeScript的方法
2020/03/19 Javascript
JS实现炫酷雪花飘落效果
2020/08/19 Javascript
[36:22]VP vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
pytyon 带有重复的全排列
2013/08/13 Python
python日志记录模块实例及改进
2017/02/12 Python
python基础while循环及if判断的实例讲解
2017/08/25 Python
Python自动化运维之IP地址处理模块详解
2017/12/10 Python
Python3实现的简单验证码识别功能示例
2018/05/02 Python
Python3.5局部变量与全局变量作用域实例分析
2019/04/30 Python
Python3内置模块之json编解码方法小结【推荐】
2020/12/09 Python
python tkinter canvas 显示图片的示例
2019/06/13 Python
ML神器:sklearn的快速使用及入门
2019/07/11 Python
基于python连接oracle导并出数据文件
2020/04/28 Python
Python基于pandas绘制散点图矩阵代码实例
2020/06/04 Python
Python导入数值型Excel数据并生成矩阵操作
2020/06/09 Python
利用Python实现朋友圈中的九宫格图片效果
2020/09/03 Python
DC Shoes澳大利亚官方网上商店:购买DC鞋子
2019/10/25 全球购物
高级销售求职信
2014/02/21 职场文书
幼儿园三八妇女节活动总结
2015/02/06 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书