Android短信息验证码自动填写详细介绍

2023-10-06 16:33

本文主要是介绍Android短信息验证码自动填写详细介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近新发现安卓验证码在获取验证码自动填写这块比较火,今天很好奇的去研究了一下,所以马上写博客将这块和大家一起分享,在自己的真机上面测试 通过

1、下面是获取验证码的整个流程图


接下面我就不多说废话了,直接贴我这块的代码了


/***
 * 
 * @类描述:
 * @项目名称:CargoUser
 * @包名: com.cargo.cargouser.utils
 * @类名称:SmsOberver
 * @创建人:wl
 * @创建时间:2015年9月9日下午1:16:26
 * @修改人:John
 * @修改时间:2015年9月9日下午1:16:26
 * @修改备注:
 * @version v1.0
 * @see [nothing]
 * @bug [nothing]
 * @Copyright 
 * @mail *@qq.com
 * 
 * @描述: ContentObserver翻译成中文就是内容观察者,
 * 目的是观察(捕捉)特定Uri引起的数据库的变化,继而做一些相应的处理。
 * ContentObserver一般和系统或第三方程序提供的Provider一起使用,
 * 这些Provider一般情况下会有一个Uri,然后ContentObserver就去监听这些Uri数据的变化,
 * 然后做出相应的处理
 */
public class SmsOberver extends ContentObserver {
    private Handler mHandler;
    private Context mContext;
    private String code;
public SmsOberver(Handler handler,Context context) {
super(handler);
this.mContext=context;
this.mHandler=handler;
}
/**
* @描述:监听短信UR数据的变化,并对收件箱最后一条的内容进行读取  然后利用正则表达式  将短信验证码提取出来
* @方法名: onChange
* @param selfChange
* @param uri
* @创建人:John
* @创建时间:2015年9月9日下午1:18:14
* @修改人:John
* @修改时间:2015年9月9日下午1:18:14
* @修改备注:
* @throws
*/
public void onChange(boolean selfChange, Uri uri) {
super.onChange(selfChange, uri);
//得到URI  然后将短信提出出来
Uri inbox=uri.parse("content://sms/inbox");
//然后将得到的短信进行倒序进行排序   然后得到最后一条的短信息 使用cursor查询
Cursor c=mContext.getContentResolver().query(inbox, null,null,null,"date desc");
//判断这个短信息是否为空的
if(c!=null)
{
if(c.moveToFirst())
{
//短信息的号码
String address=c.getString(c.getColumnIndex("address"));
Log.i("test","短信息的号码:"+address);
//短信息的内容
String body=c.getString(c.getColumnIndex("body"));
Log.i("test","短信息的内容:"+address);
//拿到短信息后  将连续4位或者6位的短信验证码提取出来
Pattern pattern=Pattern.compile("\\d{6}");
//使用matcher将body提取
Matcher matcher=pattern.matcher(body);
//然后使用matcher进行查找
if(matcher.find())
{
code=matcher.group(0);
//此时拿到code  怎样传递给UI呢???  需要借助hander
mHandler.obtainMessage(RegisterActivity.SMS_RECEVIED_CODE,code).sendToTarget();
}
}
}
//这一次不要忘记  记得及时关闭
c.close();

}


}


二、接下来就要在需要调用的页面  绑定整这个观察者模式


1、初始化
    mSmsOberver=new SmsOberver(timeHandler, this);
    // 注册短信变化监听
   this.getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, mSmsOberver);


2、在onpurse中去掉这个观察者
     protected void onPause() {
    this.getContentResolver().unregisterContentObserver(mSmsOberver);
super.onPause();
}

3、在Handler中  handleMessage中接受这个消息  并填写进输入框中
      if(msg.what==SMS_RECEVIED_CODE)
{
String code=(String) msg.obj;
codeInput.setText(code);
}

最后一点  千万别忘记了   声明读取短信息这块的权限
 <uses-permission android:name="android.permission.READ_SMS" >
    </uses-permission>
    <uses-permission android:name="android.permission.RECEIVE_SMS" >
    </uses-permission>


最后就大功告成了,本文属于原创,需要转载,请说明出处!

这篇关于Android短信息验证码自动填写详细介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/153494

相关文章

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

Spring boot整合dubbo+zookeeper的详细过程

《Springboot整合dubbo+zookeeper的详细过程》本文讲解SpringBoot整合Dubbo与Zookeeper实现API、Provider、Consumer模式,包含依赖配置、... 目录Spring boot整合dubbo+zookeeper1.创建父工程2.父工程引入依赖3.创建ap

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

创建Java keystore文件的完整指南及详细步骤

《创建Javakeystore文件的完整指南及详细步骤》本文详解Java中keystore的创建与配置,涵盖私钥管理、自签名与CA证书生成、SSL/TLS应用,强调安全存储及验证机制,确保通信加密和... 目录1. 秘密键(私钥)的理解与管理私钥的定义与重要性私钥的管理策略私钥的生成与存储2. 证书的创建与

zookeeper端口说明及介绍

《zookeeper端口说明及介绍》:本文主要介绍zookeeper端口说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、zookeeper有三个端口(可以修改)aVNMqvZ二、3个端口的作用三、部署时注意总China编程结一、zookeeper有三个端口(可以

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)