/*
* 官网地站:http://www.ShareSDK.cn
* 技术支持QQ: 4006852216
* 官方微信:ShareSDK (如果发布新版本的话,我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题,也可以通过微信与我们取得联系,我们将会在24小时内给予回复)
*
* Copyright (c) 2013年 ShareSDK.cn. All rights reserved.
*/
package com.kaixin.android.view;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsMessage;
import android.text.TextUtils;
import android.util.Log;
/**短信监听接收器,用于自动获取短信验证码,然后自动填写到验证码区域*/
public class SMSReceiver extends BroadcastReceiver {
public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";
private SMSVerifyCodeListener verifyCodeListener = null;
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(SMS_RECEIVED_ACTION)) {
SmsMessage[] messages = getMessagesFromIntent(intent);
for (SmsMessage message : messages) {
String body = message.getDisplayMessageBody();
if (!TextUtils.isEmpty(body)) {
// "验证码:"的char , 判断在string中的位置
String value = String.valueOf(new char[] { 0x9a8c, 0x8bc1, 0x7801, 0xff1a });
int index = body.indexOf(value);
if (index > -1) {
String verifyCode = null;
try {
verifyCode = body.substring(index + 4, index + 8);
Integer.parseInt(verifyCode);
} catch (Throwable t) {
verifyCode = null;
}
if (!TextUtils.isEmpty(verifyCode) && verifyCodeListener != null) {
Log.e("verify code ==>>", verifyCode);
verifyCodeListener.receiveVerifyCode(verifyCode);
}
}
}
}
}
}
public void setSMSVerifyCodeListener(SMSVerifyCodeListener verifyCodeListener){
this.verifyCodeListener = verifyCodeListener;
}
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;
}
public interface SMSVerifyCodeListener{
public void receiveVerifyCode(String verifyCode);
}
}