Android自动填写获取到的验证码

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用


<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;

    }


}

 

标签: isp

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:java压缩与解压(Java.util.zip)

下一篇: java判断字符串中是否含有汉字