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中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

Java图片压缩三种高效压缩方案详细解析

《Java图片压缩三种高效压缩方案详细解析》图片压缩通常涉及减少图片的尺寸缩放、调整图片的质量(针对JPEG、PNG等)、使用特定的算法来减少图片的数据量等,:本文主要介绍Java图片压缩三种高效... 目录一、基于OpenCV的智能尺寸压缩技术亮点:适用场景:二、JPEG质量参数压缩关键技术:压缩效果对比

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

Win11安装PostgreSQL数据库的两种方式详细步骤

《Win11安装PostgreSQL数据库的两种方式详细步骤》PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,:本文主要介绍Win11安装PostgreSQL数据库的... 目录一、exe文件安装 (推荐)下载安装包1. 选择操作系统2. 跳转到EDB(PostgreSQL 的

Python3.6连接MySQL的详细步骤

《Python3.6连接MySQL的详细步骤》在现代Web开发和数据处理中,Python与数据库的交互是必不可少的一部分,MySQL作为最流行的开源关系型数据库管理系统之一,与Python的结合可以实... 目录环境准备安装python 3.6安装mysql安装pymysql库连接到MySQL建立连接执行S

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生