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短信息验证码自动填写详细介绍相关推荐

  1. android短信验证码代码,Android短信验证码自动填写实现代码

    今天给大家分享一个Android短信验证码自动填写的功能.先看下效果图,我发送了一条短信到手机,自动填写验证码.如图: 这个小功能运用到了观察者模式,什么是观察者模式? 观察者模式 :定义对象间的一种 ...

  2. android 短信验证码自动填写的两种方式

    https://blog.csdn.net/u010399316/article/details/48781319 https://www.01hai.com/note/av123438 https: ...

  3. Android短信验证码自动填写功能的实现

    本文出自:黄敏争的博客 前言: android应用经常会涉及到注册登录功能,而许多的注册登录或修改密码功能常常需要输入短信验证码,通常,用户收到短信需要最小化应用去查看短信再填入验证码,必然比较麻烦, ...

  4. 【Android数据存储】ContentProvider详细介绍(附实例源码)

    1.ContentProvider是什么? ContentProvider--内容提供者.它是一个类,这个类主要是对Android系统中进行共享的数据进行包装,并提供了一组统一的访问接口供其他程序调用 ...

  5. 短信验证码自动填写功能的实现

    http://blog.csdn.net/u014343528/article/details/50899380 本文出自:黄敏争的博客 前言: android应用经常会涉及到注册登录功能,而许多的注 ...

  6. FANUC机器人PNS自动运行方式详细介绍

    FANUC机器人PNS自动运行方式详细介绍 PNS(全称PROGRAM NUMBER SELECT) 详细设置画面如下图所示, 如下图所示, 第1项设置为字符串前缀,默认为PNS: 第2项为基数,即程 ...

  7. Android布局文件之 include 详细介绍

    Android布局文件之 include 详细介绍 include简介 众所周知,include就是在一个布局中,导入另一个布局文件. 优势是:相同的页面只需写一次,提高了共通布局的复用性. 下面我们 ...

  8. 基于浏览器的验证码自动填写插件

    验证码自动填写.自动打码.网页验证码识别.自动填验证码的浏览器插件 致程序猿.高自动化测试工程师.高级渗透工程师等计算机行业人员的福利: Q1:程序还没有上jwt.Redis等session持久化,导 ...

  9. android 短信验证码自动填写的二种方法

    转载自:https://blog.csdn.net/VirusDerekRuler/article/details/78506522 现在开发越来越注重用户体验了,现今Android基本都有短信验证功 ...

  10. Android 短信验证码自动填写

    这个也不是什么新东西,目前很多app都有这个功能,最近有几个小伙伴问我是怎么实现的,索性写一篇博客来为大家解答. 实现思路很简单:1.在需要输入验证码的Activity代码注册监听短信的广播 2.拦截 ...

最新文章

  1. 人工智能的发展与障碍 | 麦肯锡
  2. 《Python语言程序设计》——2.10 增强型赋值运算符
  3. 来做一做你是三国里的哪一个人物呢
  4. 关于常用mysql的文件
  5. VTK修炼之道83:Pipeline管线执行模型
  6. java jdbc连接oracle_Java使用JDBC连接Oracle 11gR2
  7. python数据库增删改查_python实现数据库增删改查
  8. 二进制转base64
  9. php7 pdo mysql_PHP7添加pdo_mysql扩展
  10. 大数据学习笔记15:MR案例——IP地址去重
  11. 我的.NET开发环境设置
  12. 谈谈主策划需要的能力
  13. python基础练习题:找到一个圆锥的体积。【难度:1级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
  14. 队列:实用服务和数据结构
  15. python怎么交换xy轴_matplotlib Y轴和X轴交换
  16. Pytorch中BatchNorm中running_mean和running_var的计算方法
  17. android webview 劫持,微信webview 及第三方浏览器劫持视频问题
  18. (新SOTA)UNETR++:轻量级的、高效、准确的共享权重的3D医学图像分割
  19. VR全景拍摄如何拍摄?如何使用拍摄器材?
  20. 出现java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher错误

热门文章

  1. 英国进口FTDI FT232RL 串口芯片真假大揭秘
  2. getinfo()java,Java Provider getInfo()用法及代碼示例
  3. Java成员方法getinfo_我想问下程序中的setInfo()和getInfo()它们怎调用的??
  4. 如何在 Android 中减小 APK 大小?
  5. 计算机连接网络是飞行模式怎么办,电脑网络设置只剩飞行模式怎么办?
  6. [词汇] 十四、动词
  7. kvm创建快照、查看快照、恢复快照、删除快照
  8. 毕业论文排版,格式总结
  9. 一图看懂编程语言分类
  10. 将外国文献翻译成中文