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;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助。
热门推荐
10 五一公司放假祝福语简短
11 追星女孩的祝福语简短
12 给长辈端午祝福语 简短
13 生日祝福语有诗意简短
14 团圆日祝福语简短
15 中秋商务祝福语简短最新
16 温暖文艺简短祝福语短句
17 男孩上学祝福语简短的
18 入住酒店文案祝福语简短