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;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助。
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下