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 相关文章推荐
浅谈@Value和@Bean的执行顺序问题
Jun 16 Java/Android
详解Java线程池是如何重复利用空闲线程的
Jun 26 Java/Android
SpringBoot整合JWT的入门指南
Jun 29 Java/Android
SpringBoot整合阿里云视频点播的过程详解
Dec 06 Java/Android
mybatis源码解读之executor包语句处理功能
Feb 15 Java/Android
详解Flutter和Dart取消Future的三种方法
Apr 07 Java/Android
Java 多态分析
Apr 26 Java/Android
Java存储没有重复元素的数组
Apr 29 Java/Android
Java 多线程协作作业之信号同步
May 11 Java/Android
Java实现注册登录跳转
Jun 16 Java/Android
Java Spring Boot请求方式与请求映射过程分析
Jun 25 Java/Android
Java 中的 Lambda List 转 Map 的多种方法详解
Jul 07 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 rawurlencode与urlencode函数的深入分析
2013/06/08 PHP
Yii实现显示静态页的方法
2016/04/25 PHP
浅谈PHP正则中的捕获组与非捕获组
2016/07/18 PHP
PHP配置ZendOpcache插件加速
2019/02/14 PHP
AJAX架构之Dojo篇
2007/04/10 Javascript
js操作iframe父子窗体示例
2014/05/22 Javascript
Eclipse引入jquery报错如何解决
2015/12/01 Javascript
利用webstrom调试Vue.js单页面程序的方法教程
2017/06/06 Javascript
微信小程序实现长按删除图片的示例
2018/05/18 Javascript
微信小程序HTTP请求从0到1封装
2019/09/09 Javascript
JavaScript 作用域scope简单汇总
2019/10/23 Javascript
nuxt配置通过指定IP和端口访问的实现
2020/01/08 Javascript
JS实现transform实现扇子效果
2020/01/17 Javascript
vue+elementUi 实现密码显示/隐藏+小图标变化功能
2020/01/18 Javascript
基于JavaScript的数据结构队列动画实现示例解析
2020/08/06 Javascript
python实现复制整个目录的方法
2015/05/12 Python
python 自动化将markdown文件转成html文件的方法
2016/09/23 Python
Python编程实现蚁群算法详解
2017/11/13 Python
微信跳一跳python代码实现
2018/01/05 Python
Django数据库操作之save与update的使用
2020/04/01 Python
20行Python代码实现视频字符化功能
2020/04/13 Python
python 实现两个线程交替执行
2020/05/02 Python
基于SQLAlchemy实现操作MySQL并执行原生sql语句
2020/06/10 Python
4款Python 类型检查工具,你选择哪个呢?
2020/10/30 Python
详解Python+Selenium+ChromeDriver的配置和问题解决
2021/01/19 Python
Windows和Linux动态库应用异同
2016/07/28 面试题
应届毕业生就业自荐信
2013/10/26 职场文书
应届生会计求职信
2013/11/11 职场文书
工程力学硕士生的自我评价范文
2013/11/16 职场文书
计算机专业推荐信范文
2013/11/20 职场文书
小学庆六一活动方案
2014/02/28 职场文书
酒店开业庆典策划方案
2014/05/28 职场文书
明星员工获奖感言
2014/08/14 职场文书
大学生国家助学金感谢信
2015/01/23 职场文书
2015年公务员转正工作总结
2015/04/24 职场文书
2019年最新感恩节祝福语(28句)
2019/11/27 职场文书