android短信验证码自动填写
首先学习一下观察者模式:
观察者模式是软件设计模式中的一种,在此种模式下,一个目标物件管理所有相依于它的观察者物件,并且在他本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法
来实现。此种模式通常被用来实现事件处理系统。
观察者模式(Observer)完美的将观察者和被观察者的对象分离开,在模块之间划定了清晰的界限,提高了应用程序的可维护性和重用性。
观察者设计模式定义了对象间的一种一对多的依赖关系,以便一个对象的状态发生变化时,所有依赖于它的对象都得到通知并自动刷新。
ContentObserver
内容观察者,目的是观察(捕捉)特定Uri引起的数据库的变化,继而做一些相应的处理,它类似于数据库技术中的触发器,当ContentObserver所观察的Uri发生变化时,便会触发它。
观察特定Uri的步骤如下:
1.创建我们特定的ContentObserver派生类,必须重载父类构造方法,必须重载onChange()方法去处理回调后的功能实现。
2.利用context.getContentResolover()获得ContentResolover对象,接着调用registerContentObserver()方法去注册内容观察者。
3.由于ContentObserver的生命周期不同步于Acitivity和Service等,因此,在 不需要时,需要手动的调用unregisterContentObserver()去取消注册。
1.编写SmsContentObserver类
public class SmsObserver extends ContentObserver {private Context mContext;private Handler mHandler;public SmsObserver(Context context ,Handler handler){super(handler);mContext = context;mHandler = handler;}@Overridepublic void onChange(boolean selfChange, Uri uri) {super.onChange(selfChange, uri);Log.e("DEBUG", "sms has changed");Log.e("DEBUG",uri.toString());String code = "";//短信变化发出第一个变化是下面的uri,但这时短信并未写入到数据库中,因此这次变化不能做出回调if ((uri.toString()).equals("content://sms/raw")){return;}Uri inboxUri = Uri.parse("content://sms/inbox");Cursor c = mContext.getContentResolver().query(inboxUri,null,null,null,"date desc");//按日期倒序排列if (c!=null){if (c.moveToFirst()){String address = c.getString(c.getColumnIndex("address"));String body = c.getString(c.getColumnIndex("body"));//判断发件人if (!address.equals("15566668888")){return;}Log.e("DEBUG", "发件人为:" + address + " " + "短信内容:" + body);Pattern pattern = Pattern.compile("(\\d{6})");//这个正则表达式就是指提取连续6个数字Matcher matcher = pattern.matcher(body);if (matcher.find()){code = matcher.group(0);Log.e("DEBUG","code is "+code);mHandler.obtainMessage(MainActivity.MSG_RECEIVED_CODE,code).sendToTarget();}}c.close();}}
}
2.注册observer
//注册observermObserver = new SmsObserver(MainActivity.this,mHandler);Uri uri = Uri.parse("content://sms");//这个uri指代的就是我们的短信getContentResolver().registerContentObserver(uri, true , mObserver);
3.最后使用handler修改UI
private Handler mHandler = new Handler(){@Overridepublic void handleMessage(Message msg) {if (msg.what == MSG_RECEIVED_CODE){String code = (String) msg.obj;//update UImEditText.setText(code);Toast.makeText(MainActivity.this,code,Toast.LENGTH_LONG).show();}}};
android短信验证码自动填写相关推荐
- android短信验证码代码,Android短信验证码自动填写实现代码
今天给大家分享一个Android短信验证码自动填写的功能.先看下效果图,我发送了一条短信到手机,自动填写验证码.如图: 这个小功能运用到了观察者模式,什么是观察者模式? 观察者模式 :定义对象间的一种 ...
- android 短信验证码自动填写的两种方式
https://blog.csdn.net/u010399316/article/details/48781319 https://www.01hai.com/note/av123438 https: ...
- Android短信验证码自动填写功能的实现
本文出自:黄敏争的博客 前言: android应用经常会涉及到注册登录功能,而许多的注册登录或修改密码功能常常需要输入短信验证码,通常,用户收到短信需要最小化应用去查看短信再填入验证码,必然比较麻烦, ...
- Android 短信验证码自动填写
这个也不是什么新东西,目前很多app都有这个功能,最近有几个小伙伴问我是怎么实现的,索性写一篇博客来为大家解答. 实现思路很简单:1.在需要输入验证码的Activity代码注册监听短信的广播 2.拦截 ...
- android 短信验证码自动填写的二种方法
转载自:https://blog.csdn.net/VirusDerekRuler/article/details/78506522 现在开发越来越注重用户体验了,现今Android基本都有短信验证功 ...
- 短信验证码自动填写功能的实现
http://blog.csdn.net/u014343528/article/details/50899380 本文出自:黄敏争的博客 前言: android应用经常会涉及到注册登录功能,而许多的注 ...
- android 自动读取短息,Android实现短信验证码自动拦截读取功能
本文实例为大家分享了Android短信验证码自动拦截读取 的具体代码,供大家参考,具体内容如下 知识准备: 1.观察者模式的理解[文章稍后来到~~] 2.Android的Cursor使用[Androi ...
- Android自定义控件之短信验证码自动填充
VerifyCodeView VerifyCodeView是一个用于输入验证码的Android自定义控件,它支持数字类型的验证码,支持自定义外观,并且支持短信验证码自动填充. 项目地址:https:/ ...
- android获取短信验证码自动填入
android获取短信验证码自动填入的简单实现,可以直接用 权限 <!--读取短信权限--> <uses-permission android:name="android. ...
- ios 短信验证码自动填充时总是被复制两遍
ios 短信验证码自动填充时总是被复制两遍 解决: 限制input标签的maxlength:
最新文章
- python read函数返回值_python read()方法定义及使用(实例解析)
- 2018年9月份GitHub上最热门的Python项目
- 鸿蒙os 2.0跑分,预装鸿蒙OS 2.0!华为MatePad Pro2跑分曝光:麒麟9000、8GB内存
- jdbc Template 介绍和 spring 链接数据源的四种方式
- golang 捕获堆栈信息_【网络数据安全】为什么时间戳对于数据包捕获很重要
- 图像分类中混淆矩阵精度验证法中的几个指标说明
- LayerNorm是Transformer的最优解吗?
- SET ARITHABORT ON 对UI的影响
- iOS项目功能模块封装SDK使用总结
- 索尼首款 AI 图像传感器,让相机处处更智能
- Feign 超时设置
- Java之一致性hash算法原理及实现
- C语言之基本算法09—各位全是a的数列之和
- VB6里自动提交/自动填表的一种相对通用的方案
- Runtime.getRuntime().exec()----记录日志案例
- e站host地址_ip地址基础入门知识
- B2B网站平台建设:优势、功能、模块三大方向解析
- IE插件加载题目调试
- nlohmann json使用
- 前台离岗提示语_酒店前台温馨提示语