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各种比较对象的方式的对比总结
Jun 20 Java/Android
Spring中bean的生命周期之getSingleton方法
Jun 30 Java/Android
解决SpringBoot文件上传临时目录找不到的问题
Jul 01 Java/Android
Java获取e.printStackTrace()打印的信息方式
Aug 07 Java/Android
Java实现房屋出租系统详解
Oct 05 Java/Android
详解Spring Security中的HttpBasic登录验证模式
Mar 17 Java/Android
Java 超详细讲解IO操作字节流与字符流
Mar 25 Java/Android
springboot layui hutool Excel导入的实现
Mar 31 Java/Android
Android超详细讲解组件ScrollView的使用
Mar 31 Java/Android
Spring Boot 使用 Spring-Retry 进行重试框架
Apr 24 Java/Android
SpringCloud中分析讲解Feign组件添加请求头有哪些坑梳理
Jun 21 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
附件名前加网站名
2008/03/23 PHP
PHP实现MySQL更新记录的代码
2008/06/07 PHP
PHP 数组排序方法总结 推荐收藏
2010/06/30 PHP
php获取mysql字段名称和其它信息的例子
2014/04/14 PHP
浅谈PHP的数据库接口和技术
2016/12/09 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
2019/10/14 PHP
JQUERY1.6 使用方法四 检测浏览器
2011/11/23 Javascript
jQuery中$.each使用详解
2015/01/29 Javascript
JavaScript输出当前时间Unix时间戳的方法
2015/04/06 Javascript
js实现跨域的4种实用方法原理分析
2015/10/29 Javascript
基于jQuery日历插件制作日历
2016/03/11 Javascript
Node.js实用代码段之获取Buffer对象字节长度
2016/03/17 Javascript
js实现千分符和保留几位小数的简单实例
2016/08/01 Javascript
浅谈javascript中执行环境(作用域)与作用域链
2016/12/08 Javascript
关于微信jssdk实现多图片上传的一点心得分享
2016/12/13 Javascript
Vue.js在使用中的一些注意知识点
2017/04/29 Javascript
js上传图片预览的实现方法
2017/05/09 Javascript
vue2.0 computed 计算list循环后累加值的实例
2018/03/07 Javascript
详解Ubuntu安装angular-cli遇到的坑
2018/09/08 Javascript
vue中v-model对select的绑定操作
2020/08/31 Javascript
了不起的11个JavaScript代码重构最佳实践小结
2021/01/11 Javascript
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
python pdb调试方法分享
2014/01/21 Python
Python中的yield浅析
2014/06/16 Python
python自动化测试实例解析
2014/09/28 Python
使用Python生成url短链接的方法
2015/05/04 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
2019/06/28 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
2021/03/01 Python
Ticketmaster意大利:音乐会、节日、艺术和剧院的官方门票
2019/12/23 全球购物
餐厅总经理岗位职责
2013/12/31 职场文书
计算机专业毕业生自荐信
2013/12/31 职场文书
酒店仓管员岗位职责
2014/04/28 职场文书
抗洪救灾先进集体事迹材料
2014/05/26 职场文书
酒店优秀员工事迹材料
2014/06/02 职场文书
支行行长岗位职责
2015/02/15 职场文书
企业版Windows 11有哪些新功能? Win11适用于企业的功能介绍
2021/11/21 数码科技