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 相关文章推荐
JPA如何使用entityManager执行SQL并指定返回类型
Jun 15 Java/Android
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
Jun 21 Java/Android
如何解决springcloud feign 首次调用100%失败的问题
Jun 23 Java/Android
死磕 java同步系列之synchronized解析
Jun 28 Java/Android
JavaGUI模仿QQ聊天功能完整版
Jul 04 Java/Android
springboot集成springCloud中gateway时启动报错的解决
Jul 16 Java/Android
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
Aug 30 Java/Android
OpenCV实现反阈值二值化
Nov 17 Java/Android
Java使用JMeter进行高并发测试
Nov 23 Java/Android
使用jpa之动态插入与修改(重写save)
Nov 23 Java/Android
Java的Object类的九种方法
Apr 13 Java/Android
java开发双人五子棋游戏
May 06 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中的生成XML文件的4种方法分享
2012/10/06 PHP
php 启动报错如何解决
2014/01/17 PHP
php+highchats生成动态统计图
2014/05/21 PHP
yii实现级联下拉菜单的方法
2014/07/31 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
2018/05/16 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
详解Laravel设置多态关系模型别名的方式
2019/10/17 PHP
jQuery.Validate 使用笔记(jQuery Validation范例 )
2010/06/25 Javascript
js实现遮罩层划出效果是生成div而不是显示
2014/07/29 Javascript
jQuery获取当前点击的对象元素(实现代码)
2016/05/19 Javascript
AngularJS基础 ng-srcset 指令简单示例
2016/08/03 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
使用JavaScript实现在页面中显示距离2017年中秋节的天数
2017/09/26 Javascript
JS处理数据四舍五入(tofixed与round的区别详解)
2017/10/26 Javascript
json对象及数组键值的深度大小写转换问题详解
2018/03/30 Javascript
Vue的路由及路由钩子函数的实现
2019/07/02 Javascript
js实现详情页放大镜效果
2020/10/28 Javascript
Python实现的金山快盘的签到程序
2013/01/17 Python
python正则表达式抓取成语网站
2013/11/20 Python
python学习教程之使用py2exe打包
2017/09/24 Python
Python编程二分法实现冒泡算法+快速排序代码示例
2018/01/15 Python
Python科学计算包numpy用法实例详解
2018/02/08 Python
python定时检测无响应进程并重启的实例代码
2019/04/22 Python
Django 大文件下载实现过程解析
2019/08/01 Python
python文件操作的简单方法总结
2019/11/07 Python
Python将QQ聊天记录生成词云的示例代码
2021/02/10 Python
CSS3 渐变(Gradients)之CSS3 线性渐变
2016/07/08 HTML / CSS
css3和jquery实现的可折叠导航菜单适合放在手机网页的导航菜单
2014/09/02 HTML / CSS
纯CSS3实现扇形动画菜单(简化版)实例源码
2017/01/17 HTML / CSS
银行实习鉴定
2013/12/13 职场文书
学习决心书范文
2014/03/11 职场文书
党支部活动策划方案
2014/08/18 职场文书
平安建设汇报材料
2014/12/29 职场文书
幼儿园三八妇女节活动总结
2015/02/06 职场文书
2016年中学植树节活动总结
2016/03/16 职场文书
python爬虫之利用selenium模块自动登录CSDN
2021/04/22 Python