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;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助。