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将文件打包成zip存放或导出
Jun 11 Java/Android
Spring Data JPA的Audit功能审计数据库的变更
Jun 26 Java/Android
Java elasticsearch安装以及部署教程
Jun 28 Java/Android
每日六道java新手入门面试题,通往自由的道路
Jun 30 Java/Android
Java使用httpRequest+Jsoup爬取红蓝球号码
Jul 02 Java/Android
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
Aug 30 Java/Android
SSM项目使用拦截器实现登录验证功能
Jan 22 Java/Android
Spring事务管理下synchronized锁失效问题的解决方法
Mar 31 Java/Android
Android Rxjava3 使用场景详解
Apr 07 Java/Android
Spring Cloud OpenFeign模版化客户端
Jun 25 Java/Android
Java实现HTML转为Word的示例代码
Jun 28 Java/Android
java获取一个文本文件的编码(格式)信息
Sep 23 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中的日期及时间
2006/11/23 PHP
php验证码生成器
2017/05/24 PHP
启用OPCache提高PHP程序性能的方法
2019/03/21 PHP
jquery提升性能最佳实践小结
2010/12/06 Javascript
一款jquery特效编写的大度宽屏焦点图切换特效的实例代码
2013/08/05 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
2017/02/16 Javascript
JS实现复制功能
2017/03/01 Javascript
vue的基本用法与常见指令
2017/08/15 Javascript
删除table表格行的实例讲解
2017/09/21 Javascript
jQuery代码优化方法总结
2018/01/29 jQuery
vue框架搭建之axios使用教程
2018/07/11 Javascript
axios全局注册,设置token,以及全局设置url请求网段的方法
2018/09/25 Javascript
微信小程序时间控件picker view使用详解
2018/12/28 Javascript
如何检查一个对象是否为空
2019/04/11 Javascript
python中元类用法实例
2014/10/10 Python
Django静态资源URL STATIC_ROOT的配置方法
2014/11/08 Python
Python装饰器基础详解
2016/03/09 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
2016/04/27 Python
使用pycharm生成代码模板的实例
2018/05/23 Python
对python字典元素的添加与修改方法详解
2018/07/06 Python
pytorch 使用加载训练好的模型做inference
2020/02/20 Python
Python处理mysql特殊字符的问题
2020/03/02 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
法国家具及室内配件店:home24
2017/01/21 全球购物
韩国11街:11STREET
2018/03/27 全球购物
NFL欧洲商店(德国):NFL Europe Shop DE
2018/11/03 全球购物
校园歌手大赛策划书
2014/01/17 职场文书
三年级班级文化建设方案
2014/05/04 职场文书
竞选班长演讲稿400字
2014/08/22 职场文书
党员查摆剖析材料
2014/10/10 职场文书
2014年维修工作总结
2014/11/22 职场文书
中层干部考核评语
2015/01/04 职场文书
新郎婚礼答谢词
2015/01/04 职场文书
聘任书的格式及模板
2019/10/28 职场文书