Android开发保存QQ密码功能
作者:Lssの老父亲 发布时间:2021-09-10 06:44:27
标签:Android,QQ,密码
本文实例为大家分享了Android保存QQ密码功能的具体代码,供大家参考,具体内容如下
技术要点:
使用文件储存的方式保存数据
实现步骤:
①用户交互界面的设计与实现
②工具类(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移动开发基础案例教程》
来源:https://blog.csdn.net/qq_50982405/article/details/113179932
0
投稿
猜你喜欢
- 什么是OKHttp一般在Java平台上,我们会使用Apache HttpClient作为Http客户端,用于发送 HTTP 请求,并对响应进
- Spring Boot如何实现配置文件的自动加载和刷新?在使用Spring Boot开发应用程序时,配置文件是非常重要的组成部分。在不同的环
- 目前市面上的第三方短信服务平台数量十分庞大,并能为企业提供三网合一的短信接口,这些服务商通过整合短信发送服务,简单的打包成为API和SDK接
- 语音获取要想发送语音信息,首先得获取语音,这里有几种方法,一种是使用DirectX的DirectXsound来录音,我为了简便使用一个开源的
- 写在自定义之前我们也许会遇到,自定义控件的触屏事件处理,先来了解一下View类中的,onTouch事件和onTouchEvent事件。1、b
- 本文详细地介绍了Java内存管理的原理,以及内存泄露产生的原因,同时提供了一些列解决Java内存泄露的方案,希望对各位Java开发者有所帮助
- 主要介绍:1.任务队列2.拒绝策略(抛出异常、直接丢弃、阻塞、临时队列)3.init( min )4.active5.maxmin<=
- 该文章中使用了较多的 委托delegate和Lambda表达式,如果你并不熟悉这些,请查看我的文章《委托与匿名委托》、《匿名委托与Lambd
- 为了保证服务的高可用,及时发现问题,迅速解决问题,为应用添加log是必不可少的。但是随着项目的增大,方法增多,每个方法加单独加日志处理会有很
- 通常在 java 中对文本、网络资源等操作起来是很繁杂的,要声明,读取,关闭三个阶段,还得考虑异常情况。假设我们要读取一段文本显示到控制台,
- 前言《布谷鸟闯关-简单版》是一个基于java的布谷鸟闯关游戏,摁上键控制鸟的位置穿过管道间的缝隙,需要做碰撞检测,监听键盘事件,背景图片的切
- 前言工作中是否遇到这样的场景?1、需要异步线程执行,而且需要获取到线程执行返回的结果。2、如果执行过程异常,可以按照自定义方式消费异常信息。
- 前言提起子类、基类和方法继承这些概念,肯定大家都非常熟悉。毕竟,作为一门支持OOP的语言,掌握子类、基类是学习C#的基础。不过,这些概念虽然
- 前言J.U.C是java包java.util.concurrent的简写,中文简称并发包,是jdk1.5新增用来编写并发相关的基础api。j
- 前言:最近公司C轮融资成功了,移动团队准备扩大一下,需要招聘Android开发工程师,陆陆续续面试了几位Android应聘者,面试过程中聊到
- LongAdder实现原理图高并发下N多线程同时去操作一个变量会造成大量线程CAS失败,然后处于自旋状态,导致严重浪费CPU资源,降低了并发
- 一、栈1.1 概述Java为什么要有集合类: 临时存储数据。链表的本质: 对象间通过持有和引用关系互相关联起来。线性表: 普通线性表, 操作
- 代理模式代理模式(Proxy):为其他对象提供一个代理以控制对这个对象的访问。主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远
- Gizmos是场景视图里的一个可视化调试工具。在做项目过程中。我们常常会用到它,比如:绘制一条射线等。Unity3D 4.2版本号截至。眼下
- Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(