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集成Druid连接池连接MySQL8.0.11
Jul 02 Java/Android
java设计模式--三种工厂模式详解
Jul 21 Java/Android
使用logback实现按自己的需求打印日志到自定义的文件里
Aug 30 Java/Android
Java数据开发辅助工具Docker与普通程序使用方法
Sep 15 Java/Android
Java使用JMeter进行高并发测试
Nov 23 Java/Android
java协程框架quasar和kotlin中的协程对比分析
Feb 24 Java/Android
Java并发编程之原子性-Atomic的使用
Mar 16 Java/Android
Spring Data JPA框架持久化存储数据到数据库
Apr 28 Java/Android
SpringBoot使用ip2region获取地理位置信息的方法
Jun 21 Java/Android
Android RecyclerView实现九宫格效果
Jun 28 Java/Android
HttpClient实现表单提交上传文件
Aug 14 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防注入安全代码
2008/04/09 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
2011/07/18 PHP
php判断两个浮点数是否相等的方法
2015/03/14 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
2016/06/29 PHP
Thinkphp实现站点静态化的方法详解
2017/03/21 PHP
Laravel框架实现的rbac权限管理操作示例
2019/01/16 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
2019/03/30 PHP
Laravel定时任务的每秒执行代码
2019/10/22 PHP
laravel清除视图缓存的代码
2019/10/23 PHP
Sample script that deletes a SQL Server database
2007/06/16 Javascript
javascript验证身份证完全方法具体实现
2013/11/18 Javascript
jquery.Ajax()方法调用Asp.Net后台的方法解析
2014/02/13 Javascript
对 jQuery 中 data 方法的误解分析
2014/06/18 Javascript
javascript中call,apply,bind的用法对比分析
2015/02/12 Javascript
原生js和jQuery写的网页选项卡特效对比
2015/04/27 Javascript
JS实现选择TextArea内文本的方法
2015/08/03 Javascript
javascript如何操作HTML下拉列表标签
2015/08/20 Javascript
JavaScript中数组的合并以及排序实现示例
2015/10/24 Javascript
基于angular中的重要指令详解($eval,$parse和$compile)
2016/10/21 Javascript
js实现旋转木马效果
2017/03/17 Javascript
vue实现父子组件之间的通信以及兄弟组件的通信功能示例
2019/01/29 Javascript
使用pm2部署node生产环境的方法步骤
2019/03/09 Javascript
微信小程序登录session的使用
2019/03/17 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
详解element-ui动态限定的日期范围选择器代码片段
2020/07/03 Javascript
JavaScript实现HTML导航栏下拉菜单
2020/11/25 Javascript
Python数组遍历的简单实现方法小结
2016/04/27 Python
Tensorflow环境搭建的方法步骤
2018/02/07 Python
html5 自定义播放器核心代码
2013/12/20 HTML / CSS
公司庆典活动邀请函
2014/01/09 职场文书
财务会计人员求职的自我评价
2014/01/13 职场文书
化妆品活动策划方案
2014/05/23 职场文书
拓展训练激励口号
2014/06/17 职场文书
运动会致辞稿
2015/07/29 职场文书
2019年个人工作总结范文(3篇)
2019/08/27 职场文书
PyQt5 QThread倒计时功能的实现代码
2021/04/02 Python