Android实现自动填写获取验证码功能
本文实例讲解了Android自动提取短信验证码解决方案,分享给大家供大家参考,具体内容如下
<uses-permissionandroid:name="android.permission.RECEIVE_SMS"></uses-permission> <uses-permissionandroid:name="android.permission.READ_SMS"></uses-permission>
packagecom.dongdongsongcan.app; importandroid.content.BroadcastReceiver; importandroid.content.Context; importandroid.content.Intent; importandroid.telephony.SmsMessage; importcom.su.dolphin.utils.LogUtil; importjava.util.ArrayList; importjava.util.List; importjava.util.regex.Matcher; importjava.util.regex.Pattern; publicclassSMSReceiverextendsBroadcastReceiver { publicinterfaceISMSListener{ publicvoidonSmsReceive(StringverifyCode); } privatestaticISMSListenermSMSListener; publicSMSReceiver(ISMSListenerismsListener){ mSMSListener=ismsListener; } publicstaticfinalStringTAG="ImiChatSMSReceiver"; //android.provider.Telephony.Sms.Intents publicstaticfinalStringSMS_RECEIVED_ACTION="android.provider.Telephony.SMS_RECEIVED"; @Override publicvoidonReceive(Contextcontext,Intentintent) { LogUtil.d(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); if(intent.getAction().equals(SMS_RECEIVED_ACTION)) { SmsMessage[]messages=getMessagesFromIntent(intent); for(SmsMessagemessage:messages) { //LogUtil.d(message.getOriginatingAddress()+":"+ // //message.getDisplayOriginatingAddress()+":"+ // //message.getDisplayMessageBody()+":"+ // //message.getTimestampMillis()); Stringmsg=message.getDisplayMessageBody(); LogUtil.d("MSG:"+msg); StringverifyCode=null; Patternp=Pattern.compile("\\d{4}"); Matcherm=p.matcher(msg); while(m.find()){ verifyCode=m.group(); break; } LogUtil.d("verifyCode"+verifyCode); if(mSMSListener!=null){ mSMSListener.onSmsReceive(verifyCode); } } } } publicfinalSmsMessage[]getMessagesFromIntent(Intentintent) { Object[]messages=(Object[])intent.getSerializableExtra("pdus"); byte[][]pduObjs=newbyte[messages.length][]; for(inti=0;i<messages.length;i++) { pduObjs[i]=(byte[])messages[i]; } byte[][]pdus=newbyte[pduObjs.length][]; intpduCount=pdus.length; SmsMessage[]msgs=newSmsMessage[pduCount]; for(inti=0;i<pduCount;i++) { pdus[i]=pduObjs[i]; msgs[i]=SmsMessage.createFromPdu(pdus[i]); } returnmsgs; } }
以上就是本文的全部内容,希望对大家的学习有所帮助。