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 14 Java/Android
Java实现多文件上传功能
Jun 30 Java/Android
如何给HttpServletRequest增加消息头
Jun 30 Java/Android
Springboot使用Spring Data JPA实现数据库操作
Jun 30 Java/Android
mybatis 解决从列名到属性名的自动映射失败问题
Jun 30 Java/Android
Springboot如何同时装配两个相同类型数据库
Nov 17 Java/Android
Java 在线考试云平台的实现
Nov 23 Java/Android
SpringBoot中获取profile的方法详解
Apr 08 Java/Android
详细介绍Java中的CyclicBarrier
Apr 13 Java/Android
解决springboot druid数据库连接失败后一直重连的方法
Apr 19 Java/Android
Java线程的6种状态与生命周期
May 11 Java/Android
springcloud整合seata
May 20 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正则验证字符串是否为数字的两种方法并附常用正则
2019/02/27 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
IE和Firefox下event事件杂谈
2009/12/18 Javascript
Jquery中删除元素的实现代码
2011/12/29 Javascript
jquery中EasyUI使用技巧小结
2015/02/10 Javascript
jquery实现华丽的可折角广告代码
2015/09/02 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
微信小程序 底部导航栏目开发资料
2016/12/05 Javascript
jQuery实现一个简单的轮播图
2017/02/19 Javascript
JavaScript变量作用域_动力节点Java学院整理
2017/06/27 Javascript
angular.js实现购物车功能
2017/10/23 Javascript
ejsExcel模板在Vue.js项目中的实际运用
2018/01/27 Javascript
React 无状态组件(Stateless Component) 与高阶组件
2018/08/14 Javascript
JS+HTML5 Canvas实现简单的写字板功能示例
2018/08/30 Javascript
详解ESLint在Vue中的使用小结
2018/10/15 Javascript
JavaScript将数组转换为链表的方法
2020/02/16 Javascript
Vue与React的区别和优势对比
2020/12/18 Vue.js
python生成器generator用法实例分析
2015/06/04 Python
Python字符串、元组、列表、字典互相转换的方法
2016/01/23 Python
python 写的一个爬虫程序源码
2016/02/28 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
2017/03/16 Python
详解python使用turtle库来画一朵花
2019/03/21 Python
Pandas之MultiIndex对象的示例详解
2019/06/25 Python
使用python制作一个解压缩软件
2019/11/13 Python
pytorch torchvision.ImageFolder的用法介绍
2020/02/20 Python
莫斯科的韩国化妆品店:Sifo
2019/12/04 全球购物
汽车工程专业应届生求职信
2013/10/19 职场文书
平面网站制作专科生的自我评价分享
2013/12/11 职场文书
某同学的自我鉴定范文
2013/12/26 职场文书
项目副经理岗位职责
2013/12/30 职场文书
同学会邀请书大全
2014/01/12 职场文书
2014年四风问题自我剖析材料
2014/09/15 职场文书
公司感恩节活动策划书
2014/10/11 职场文书
2015初中教导处工作总结
2015/07/21 职场文书
素质教育学习心得体会
2016/01/19 职场文书
教您怎么制定西餐厅运营方案 ?
2019/07/05 职场文书