android读取手机验证码
博客专区 > QGlaunch 的博客 > 博客详情
android读取手机验证码
QGlaunch 发表于3年前
android读取手机验证码
  • 发表于 3年前
  • 阅读 14
  • 收藏 0
  • 点赞 0
  • 评论 0
摘要: 用手机号注册账号时,需要往手机发送验证码,以前需要手动输入收到的验证码,现在我将实现当收到短信后将验证码自动填写到验证码框中。 参考:(1)http://blog.csdn.net/lengguoxing/article/details/42556079 (2)http://blog.csdn.net/mad1989/article/details/22426415
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);


共有 人打赏支持
粉丝 5
博文 56
码字总数 11638
×
QGlaunch
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: