网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

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

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

成都创新互联从2013年成立,先为峨山县等服务建站,峨山县等地企业,进行企业商务咨询服务。为峨山县企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

步骤:

首先我使用了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; 
  } 
    /** 
   * 从短信字符窜提取验证码 
   * @param body 短信内容 
     * @param YZMLENGTH 验证码的长度 一般6位或者4位 
   * @return 接取出来的验证码 
   */ 
  public static String getyzm(String body, int YZMLENGTH) { 
    // 首先([a-zA-Z0-9]{YZMLENGTH})是得到一个连续的六位数字字母组合 
    // (?

监听完成后记得getContentResolver().unregisterContentObserver(c);注销监听

这样子就可以监听到短信数据库的变化了记住还需要加入权限顺便列出短信权限

 
  
  
  
  
  
  
  

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。


分享文章:在Android中使用ContentObserver怎么获取短信验证码并实现自动填充
分享链接:http://bjjierui.cn/article/ihghdh.html

其他资讯