软件编程
位置:首页>> 软件编程>> Android编程>> Android实现自动填写获取验证码功能

Android实现自动填写获取验证码功能

作者:lijiao  发布时间:2023-04-17 13:47:12 

标签:android,验证码

本文实例讲解了Android自动提取短信验证码解决方案,分享给大家供大家参考,具体内容如下


<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
<uses-permission android:name="android.permission.READ_SMS"></uses-permission>


package com.dongdongsongcan.app;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsMessage;

import com.su.dolphin.utils.LogUtil;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class SMSReceiver extends BroadcastReceiver

{

public interface ISMSListener {
   public void onSmsReceive(String verifyCode);
 }

private static ISMSListener mSMSListener;

public SMSReceiver(ISMSListener ismsListener) {
   mSMSListener = ismsListener;
 }

public static final String TAG = "ImiChatSMSReceiver";

//android.provider.Telephony.Sms.Intents

public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";

@Override

public void onReceive(Context context, Intent intent)

{
   LogUtil.d(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
   if (intent.getAction().equals(SMS_RECEIVED_ACTION))

{

SmsMessage[] messages = getMessagesFromIntent(intent);

for (SmsMessage message : messages)

{

//        LogUtil.d(message.getOriginatingAddress() + " : " +
//
//            message.getDisplayOriginatingAddress() + " : " +
//
//            message.getDisplayMessageBody() + " : " +
//
//            message.getTimestampMillis());

String msg = message.getDisplayMessageBody();
       LogUtil.d("MSG: " + msg);
       String verifyCode = null;
       Pattern p = Pattern.compile("\\d{4}");
       Matcher m = p.matcher(msg);
       while (m.find()) {
         verifyCode = m.group();
         break;
       }
       LogUtil.d("verifyCode " + verifyCode);
       if (mSMSListener != null) {
         mSMSListener.onSmsReceive(verifyCode);
       }
     }

}

}

public final SmsMessage[] getMessagesFromIntent(Intent intent)

{

Object[] messages = (Object[]) intent.getSerializableExtra("pdus");

byte[][] pduObjs = new byte[messages.length][];

for (int i = 0; i < messages.length; i++)

{

pduObjs[i] = (byte[]) messages[i];

}

byte[][] pdus = new byte[pduObjs.length][];

int pduCount = pdus.length;

SmsMessage[] msgs = new SmsMessage[pduCount];

for (int i = 0; i < pduCount; i++)

{

pdus[i] = pduObjs[i];

msgs[i] = SmsMessage.createFromPdu(pdus[i]);

}

return msgs;

}

}
0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com