自动获取短信验证码并填写到编辑框中
来源:互联网 发布:c书籍推荐知乎 编辑:程序博客网 时间:2024/05/21 22:40
效果图:
大致原理:
1 监听收件箱是否发生变化
2 获取短信内容
3 正则匹配出短信验证码
4 更新UI
5 撤销注册
设计知识点: ContentObserver
具体代码段:
给短信Uri注册观察者模式
<span style="font-size:18px;">getContentResolver().registerContentObserver(uri, true, mObserver);</span>
在观察者模式中重写onChange()方法
<span style="font-size:18px;">public void onChange(boolean selfChange, Uri uri) {super.onChange(selfChange, uri);Log.e("是否变化", selfChange+"");Log.e("uri", uri+"");//第一次时直接returnif(uri.toString().equals("content://sms/raw")){return;}//收件箱的uriUri inboxUri=Uri.parse("content://sms/inbox");//最后一个代表排序方式Cursor cursor=mContext.getContentResolver().query(inboxUri, null, null, null, "date desc");if(cursor!=null){//将游标移动到第一条if(cursor.moveToFirst()){//获取发件人和短信内容,次数可以根据发件人来限制要显示的验证码来源String address=cursor.getString(cursor.getColumnIndex("address"));String body=cursor.getString(cursor.getColumnIndex("body"));Log.e("短信内容:", "短信来自:"+address+",,短信内容是:"+body);//提取验证码//正则表达式提取连续六位的数字Pattern pattern=Pattern.compile("(\\d{6})");Matcher matcher=pattern.matcher(body);if(matcher.find()){String code = matcher.group(0);handler.obtainMessage(MainActivity.CODE,code).sendToTarget();}}//关闭游标cursor.close();}}</span>
通过Handler在非UI线程中更新UI
<span style="font-size:18px;"><pre name="code" class="java">private Handler handler=new Handler(){public void handleMessage(Message msg) {if(msg.what==CODE){String code=(String) msg.obj;//更新UIsms.setText(code);sms.setSelection(sms.length());}};};</span>
撤销注册
<span style="font-size:18px;">@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();//撤销注册getContentResolver().unregisterContentObserver(mObserver);}</span>
源码下载地址:
http://download.csdn.net/detail/huiling815/9663326
1 0
- 自动获取短信验证码并填写到编辑框中
- android获取短信验证码并自动填写的实现
- android获取短信验证码并自动填写
- 自动填写获取到的短信验证码
- 安卓开发中获取短信验证码并自动填写
- 自动填写获取的短信验证码
- android获取短信验证码并自动填写的实现一
- android获取短信验证码并自动填写的实现二
- android获取短信验证码并自动填写的实现一
- android获取短信验证码并自动填写的实现一
- android获取短信验证码并自动填写的实现一
- 短信验证码自动填写
- 短信验证码自动填写
- 短信验证码自动填写
- 短信验证码自动填写
- Android提取短信验证码并自动填写
- Android 应用中使用ContentObserver自动填写短信验证码
- 读取短信自动填写验证码功能
- Trafodion 对中文的支持
- C++ 栈的应用
- python中turtle模块画正多边形
- 练习26 复杂链表拷贝
- 对称矩阵 压缩存储
- 自动获取短信验证码并填写到编辑框中
- php操作sphinx
- 稀疏矩阵-压缩存储-列转置法- 一次定位快速转置法
- Mysql varchar VS Oracle varchar2
- OGNL
- C++ 数据结构 广义表
- 栈和队列 相关 面试题
- (二分查找思想)从有序递增旋转数组45679123 中找到数字6的位置
- android缓存清理