广告
返回顶部
首页 > 资讯 > 精选 >在Android 中使用ContentObserver怎么获取短信验证码并实现自动填充
  • 879
分享到

在Android 中使用ContentObserver怎么获取短信验证码并实现自动填充

androidcontentobserverbs 2023-05-31 13:05:08 879人浏览 泡泡鱼
摘要

在Android 中使用ContentObserver怎么获取短信验证码并实现自动填充?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。步骤:首先我使用了Conte

Android 中使用ContentObserver怎么获取短信验证码并实现自动填充?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

步骤:

首先我使用了ContentObserver监听短信,(最好知道您的验证码从那个号码发过来)

然后从短信中用正则的分组去拿到验证码(当然验证码必须是什么格式)

贴出关键代码:

注册监听短信数据库的 

ContentObserver c=new ContentObserver(han) {         @Override         public void onChange(boolean selfChange) {           // TODO Auto-generated method stub           super.onChange(selfChange);           han.sendEmptyMessage(0);         }       }; getContentResolver().reGISterContentObserver(Uri.parse("content://sms"), true, c); Handler han = new Handler() {     @SuppressWarnings("deprecation")     public void handleMessage(android.os.Message msg) {       String codestr = null;       try {         codestr = Cus_UnitTools.getsmsyzm(Reg_ForgetPassWord.this);         code.setText(codestr);         requestcode();       } catch (Exception e) {         Log.e("yung", "验证码提取失败:" + codestr);       }     };   };    public static String getsmsyzm(Activity c) {     Uri uri = Uri.parse("content://sms/inbox");     String[] projection = new String[] { "address", "person", "body" };     String selection = " address='" + JTPHONE + "' ";     String[] selectionArgs = new String[] {};     String sortOrder = "date desc";     @SuppressWarnings("deprecation")     Cursor cur = c.managedQuery(uri, projection, selection, selectionArgs,         sortOrder);     if(cur!=null&&cur.getCount()>0){       cur.moveToFirst();       String body = cur.getString(cur.getColumnIndex("body")).replaceAll(           "\n", " ");       cur.close();       return getyzm(body, YZMLENGTH);   }     cur.close();     return null;   }        public static String getyzm(String body, int YZMLENGTH) {     // 首先([a-zA-Z0-9]{YZMLENGTH})是得到一个连续的六位数字字母组合     // (&#63;<![a-zA-Z0-9])负向断言([0-9]{YZMLENGTH})前面不能有数字     // (&#63;![a-zA-Z0-9])断言([0-9]{YZMLENGTH})后面不能有数字出现     Pattern p = Pattern         .compile("(&#63;<![a-zA-Z0-9])([a-zA-Z0-9]{" + YZMLENGTH + "})(&#63;![a-zA-Z0-9])");     Matcher m = p.matcher(body);     if (m.find()) {       System.out.println(m.group());       return m.group(0);     }     return null;   } //有些验证码是纯数字的那么直接用这个就可以了//Pattern p = Pattern.compile("(&#63;<![0-9])([0-9]{" + YZMLENGTH+ "})(&#63;![0-9])");

--结束END--

本文标题: 在Android 中使用ContentObserver怎么获取短信验证码并实现自动填充

本文链接: https://www.lsjlt.com/news/225834.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作