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内存模型之happens-before概念详解
Jun 13 Java/Android
详解Java分布式事务的 6 种解决方案
Jun 26 Java/Android
Java常用函数式接口总结
Jun 29 Java/Android
详细了解java监听器和过滤器
Jul 09 Java/Android
gateway网关接口请求的校验方式
Jul 15 Java/Android
使用springMVC所需要的pom配置
Sep 15 Java/Android
SpringBoot整合阿里云视频点播的过程详解
Dec 06 Java/Android
alibaba seata服务端具体实现
Feb 24 Java/Android
springboot 自定义配置 解决Boolean属性不生效
Mar 18 Java/Android
Java基础——Map集合
Apr 01 Java/Android
Spring Security使用单点登录的权限功能
Apr 03 Java/Android
Android Flutter实现图片滑动切换效果
Apr 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
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
2011/04/18 PHP
PHP基于curl后台远程登录正方教务系统的方法
2016/10/14 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2016/11/22 PHP
php获取指定数量随机字符串的方法
2017/02/06 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
解决在Laravel 中处理OPTIONS请求的问题
2019/10/11 PHP
jQuery之选项卡的简单实现
2014/02/28 Javascript
JavaScript中的依赖注入详解
2015/03/18 Javascript
json实现添加、遍历与删除属性的方法
2016/06/17 Javascript
JS实现页面跳转参数不丢失的方法
2016/11/28 Javascript
Bootstrap面板使用方法
2017/01/16 Javascript
vue2.0父子组件及非父子组件之间的通信方法
2017/01/21 Javascript
js鼠标移动时禁止选中文字
2017/02/19 Javascript
详解webpack 多入口配置
2017/06/16 Javascript
详解Angular5 路由传参的3种方法
2018/04/28 Javascript
javascript实现文本框标签验证的实例代码
2018/10/14 Javascript
js实现图片放大并跟随鼠标移动特效
2019/01/18 Javascript
javascript中数组的常用算法深入分析
2019/03/12 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
2019/11/13 Javascript
JavaScript字符串处理常见操作方法小结
2019/11/15 Javascript
[04:02]2014DOTA2国际邀请赛 BBC每日综述中国战队将再度登顶
2014/07/21 DOTA
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
2017/06/23 Python
Python数据分析库pandas基本操作方法
2018/04/08 Python
用Python下载一个网页保存为本地的HTML文件实例
2018/05/21 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
2018/12/10 Python
python scp 批量同步文件的实现方法
2019/01/03 Python
美国诺德斯特龙百货官网:Nordstrom
2016/08/23 全球购物
面向中国市场的在线海淘美妆零售网站:Beauty House美丽屋
2021/03/02 全球购物
软件设计的目标是什么
2016/12/04 面试题
劳资协议书范本
2014/04/23 职场文书
廉政教育的心得体会
2014/09/01 职场文书
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
学习习近平主席讲话心得体会
2016/01/20 职场文书
Python语言内置数据类型
2022/02/24 Python
Python中的协程(Coroutine)操作模块(greenlet、gevent)
2022/05/30 Python
Ubuntu18.04下QT开发Android无法连接设备问题解决实现
2022/06/01 Java/Android