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 Swing实现自助取款机系统
Jun 11 Java/Android
浅析NIO系列之TCP
Jun 15 Java/Android
ConstraintValidator类如何实现自定义注解校验前端传参
Jun 18 Java/Android
详解Java实践之抽象工厂模式
Jun 18 Java/Android
spring项目中切面及AOP的使用方法
Jun 26 Java/Android
Java生成读取条形码和二维码的简单示例
Jul 09 Java/Android
SpringDataJPA实体类关系映射配置方式
Dec 06 Java/Android
JVM之方法返回地址详解
Feb 28 Java/Android
Java并发编程之原子性-Atomic的使用
Mar 16 Java/Android
SpringCloud Feign请求头删除修改的操作代码
Mar 20 Java/Android
IDEA 2022 Translation 未知错误 翻译文档失败
Apr 24 Java/Android
app场景下uniapp的扫码记录
Jul 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
IE本地存储userdata的一个bug说明
2010/07/01 Javascript
ASP.NET jQuery 实例15 通过控件CustomValidator验证CheckBoxList
2012/02/03 Javascript
仿中关村在线首页弹出式广告插件(jQuery版)
2012/05/03 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
2013/05/07 Javascript
让新消息在网页标题闪烁提示的jQuery代码
2013/11/04 Javascript
js调用后台、后台调用前台等方法总结
2014/04/17 Javascript
Node.js 去掉种子(torrent)文件里的邪恶信息
2015/03/27 Javascript
简述Jquery与DOM对象
2015/07/10 Javascript
window.setInterval()方法的定义和用法及offsetLeft与style.left的区别
2015/11/11 Javascript
原生js仿浏览器滚动条效果
2017/03/02 Javascript
node.js监听文件变化的实现方法
2019/04/17 Javascript
vue+koa2实现session、token登陆状态验证的示例
2019/08/30 Javascript
python中遍历文件的3个方法
2014/09/02 Python
python中的多重继承实例讲解
2014/09/28 Python
python操作ie登陆土豆网的方法
2015/05/09 Python
Python使用面向对象方式创建线程实现12306售票系统
2015/12/24 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
python读取中文txt文本的方法
2018/04/12 Python
pandas使用get_dummies进行one-hot编码的方法
2018/07/10 Python
详解python之heapq模块及排序操作
2019/04/04 Python
Ubuntu18.04下python版本完美切换的解决方法
2019/06/14 Python
python 计算平均平方误差(MSE)的实例
2019/06/29 Python
tensorflow模型保存、加载之变量重命名实例
2020/01/21 Python
Django 解决新建表删除后无法重新创建等问题
2020/05/21 Python
最简单的matplotlib安装教程(小白)
2020/07/28 Python
Linux开机引导的步骤是什么
2015/10/19 面试题
尽职尽责村干部自我鉴定
2014/01/23 职场文书
xxx同志考察材料
2014/02/07 职场文书
安全协议书范本
2014/04/21 职场文书
助学贷款贫困证明
2014/09/23 职场文书
离职报告格式
2014/11/04 职场文书
2014年学校工会工作总结
2014/12/06 职场文书
2015双创工作总结
2015/07/24 职场文书
党员干部学习三严三实心得体会
2016/01/05 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书
Java输出Hello World完美过程解析
2021/06/13 Java/Android