博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android读取手机验证码
阅读量:7033 次
发布时间:2019-06-28

本文共 2210 字,大约阅读时间需要 7 分钟。

hot3.png

public class GetSmsContent extends ContentObserver{      public final String SMS_URI_INBOX = "content://sms/inbox";      private Activity activity = null;      private String smsContent = "";      private EditText verifyText = null;            private String SMS_BODY = "【我在济南】%";//短息内容包含【我在济南】          public GetSmsContent(Activity activity, Handler handler, EditText verifyText) {          super(handler);          this.activity = activity;          this.verifyText = verifyText;      }        /**     * This method is called when a content change occurs.      * 当短信箱(收到/删除/发送 一条短信)发生变换时,该方法才能被调用。     */    @Override      public void onChange(boolean selfChange) {          super.onChange(selfChange);          Cursor cursor = null;// 光标          // 读取收件箱中短信内容中包含【我在济南】的短信          cursor = activity.managedQuery(Uri.parse(SMS_URI_INBOX),                   new String[] { "_id", "address", "body", "read" }, //要读取的属性                  "body like ?", //查询条件是什么                  new String[] { SMS_BODY },//查询条件赋值                  "date desc");//排序          if (cursor != null) {// 如果短信为未读模式              cursor.moveToFirst();              if (cursor.moveToFirst()) {                  String smsbody = cursor.getString(cursor.getColumnIndex("body"));                  System.out.println("smsbody=======================" + smsbody);                //截取短信内容中第一个逗号之前的字符串。然后通过正则表达式找出字符串中的数字。                String s = smsbody.substring(0, smsbody.indexOf(","));                String regEx = "[^0-9]";                  Pattern p = Pattern.compile(regEx);                  Matcher m = p.matcher(s.toString());                  smsContent = m.replaceAll("").trim().toString();                  if(verifyText != null && null!=smsContent && !"".equals(smsContent)){                      verifyText.setText(smsContent);                      verifyText.setSelection(smsContent.length());                  }              }          }      }  }

调用方法:在Activity的oncreate方法里面注册:

GetSmsContent  content = new GetSmsContent(RegisterByPhone.this, new Handler(), edit_yzm);

// 注册短信变化监听
this.getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, content);

转载于:https://my.oschina.net/u/1395670/blog/380315

你可能感兴趣的文章
一个简单的弹性返回顶部JS代码实现介绍
查看>>
#region的快捷键 小工具的快捷键
查看>>
Unicode in RAD Studio
查看>>
分布式消息队列中间件系列研究之阿堂教程(高级篇)
查看>>
aspnet_Applications表结构
查看>>
海洋高清网络电视
查看>>
英特尔表示:语音识别将干掉触摸操作
查看>>
配置keepalive实现mysql双主高可用
查看>>
使用阿里云域名api申请Let’s Encrypt泛域名免费ssl证书
查看>>
BLOB 存入文件
查看>>
saltstack部署openstack
查看>>
HDFS简介
查看>>
java-第十一章-类的无参方法-模拟ATM机进行账户余额查询
查看>>
linux eclipse中C++连接mysql数据库
查看>>
linux apache服务器配置虚拟主机
查看>>
Nginx服务器配置对https的支持
查看>>
shell脚本之函数的定义及使用
查看>>
sar
查看>>
RPM 校验软件包完整性
查看>>
springSecurity配置详解
查看>>