Android 短信验证码自动填写
Android短信验证码自动填写
1.自定义Observer监听短信数据库变化(注意添加短信权限)
importandroid.app.Activity; importandroid.content.ContentResolver; importandroid.database.ContentObserver; importandroid.database.Cursor; importandroid.net.Uri; importandroid.os.Handler; importandroid.text.TextUtils; importjava.util.regex.Matcher; importjava.util.regex.Pattern; /** *Createdby001on17/3/22. */ publicclassSmsObserverextendsContentObserver{ publicstaticfinalStringSMS_URI_INBOX="content://sms/inbox"; privateActivityactivity=null; privateStringsmsContent=""; privateSmsListenerlistener; publicSmsObserver(Activityactivity,Handlerhandler,SmsListenerlistener){ super(handler); this.activity=activity; this.listener=listener; } @Override publicvoidonChange(booleanselfChange){ super.onChange(selfChange); Cursorcursor=null; //读取收件箱中含有某关键词的短信 ContentResolvercontentResolver=activity.getContentResolver(); cursor=contentResolver.query(Uri.parse(SMS_URI_INBOX),newString[]{ "_id","address","body","read"},"bodylike?andread=?", newString[]{"%关键词%","0"},"datedesc"); if(cursor!=null){ cursor.moveToFirst(); if(cursor.moveToFirst()){ Stringsmsbody=cursor .getString(cursor.getColumnIndex("body")); StringregEx="[^0-9]"; Patternp=Pattern.compile(regEx); Matcherm=p.matcher(smsbody.toString()); smsContent=m.replaceAll("").trim().toString(); if(!TextUtils.isEmpty(smsContent)){ listener.onResult(smsContent); } } } } /* *短信回调接口 */ publicinterfaceSmsListener{ /** *接受sms状态 * *@Title:onResult */ voidonResult(StringsmsContent); } }
2.使用:
SmsObserversmsObserver=newSmsObserver(this,newHandler(),newSmsObserver.SmsListener(){ @Override publicvoidonResult(StringsmsContent){ //根据需求写 //如:editText.setText(smsContent); }});this.getContentResolver().registerContentObserver(Uri.parse("content://sms/"),true,smsObserver);
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!