Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。
这篇文章主要为大家详细介绍了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;
- }
- }
来源: http://www.phperz.com/article/17/0916/348812.html