//权限
<
uses-permission
android:name
=
"android.permission.RECEIVE_SMS"
/>
//注册广播
IntentFilter filter =
new
IntentFilter();
filter.addAction(
"android.provider.Telephony.SMS_RECEIVED"
);
filter.setPriority(Integer.
MAX_VALUE
);
registerReceiver(
smsReceiver
, filter);
//广播内容
//监听短信广播
private BroadcastReceiver smsReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Object[] objs = (Object[]) intent.getExtras().get("pdus");
for (Object obj : objs) {
byte[] pdu = (byte[]) obj;
SmsMessage sms = SmsMessage.createFromPdu(pdu);
// 短信的内容
String message = sms.getMessageBody();
Log.d("TAG", "message = " + message);
String from = sms.getOriginatingAddress();
Log.d("TAG", "from = " + from);
if (SERVICECHECKNUM.equals(from.toString().trim()) || TextUtils.isEmpty(SERVICECHECKNUM)) {
Time time = new Time();
time.set(sms.getTimestampMillis());
String time2 = time.format3339(true);
Log.d("TAG", from + " " + message + " " + time2);
strContent = from + " " + message;
//mHandler.sendEmptyMessage(1);
if (!TextUtils.isEmpty(from)) {
String code = patternCode(message);
if (!TextUtils.isEmpty(code)) {
strContent = code;
mHandler.sendEmptyMessage(1);
}
}
}else {
return;
}
}
}
};
private BroadcastReceiver smsReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Object[] objs = (Object[]) intent.getExtras().get("pdus");
for (Object obj : objs) {
byte[] pdu = (byte[]) obj;
SmsMessage sms = SmsMessage.createFromPdu(pdu);
// 短信的内容
String message = sms.getMessageBody();
Log.d("TAG", "message = " + message);
String from = sms.getOriginatingAddress();
Log.d("TAG", "from = " + from);
if (SERVICECHECKNUM.equals(from.toString().trim()) || TextUtils.isEmpty(SERVICECHECKNUM)) {
Time time = new Time();
time.set(sms.getTimestampMillis());
String time2 = time.format3339(true);
Log.d("TAG", from + " " + message + " " + time2);
strContent = from + " " + message;
//mHandler.sendEmptyMessage(1);
if (!TextUtils.isEmpty(from)) {
String code = patternCode(message);
if (!TextUtils.isEmpty(code)) {
strContent = code;
mHandler.sendEmptyMessage(1);
}
}
}else {
return;
}
}
}
};
如果要做读取短信验证码的话
//短信验证码内容 验证码是6位数字的格式
private
String
strContent
;
private
String
patternCoder
=
"(?<!\\d)\\d{6}(?!\\d)"
;
/**
* 匹配短信中间的6个数字(验证码等)
*
*
@param
patternContent
*
@return
*/
private
String patternCode(String patternContent) {
if
(TextUtils.isEmpty(patternContent)) {
return
null
;
}
Pattern p = Pattern. compile(
patternCoder
);
Matcher matcher = p.matcher(patternContent);
if
(matcher.find()) {
return
matcher.group();
}
return
null
;
}
计时功能
//计时重发
private class TimeCount extends CountDownTimer {
public TimeCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onTick(long millisUntilFinished) {
mSendButton.setClickable(false);
mSendButton.setText(millisUntilFinished / 1000 + "秒后重新发送");
}
@Override
public void onFinish() {
mSendButton.setText("获取验证码");
mSendButton.setClickable(true);
}
}
private class TimeCount extends CountDownTimer {
public TimeCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onTick(long millisUntilFinished) {
mSendButton.setClickable(false);
mSendButton.setText(millisUntilFinished / 1000 + "秒后重新发送");
}
@Override
public void onFinish() {
mSendButton.setText("获取验证码");
mSendButton.setClickable(true);
}
}
mTiemTimeCount
=
new
TimeCount(60000, 1000);
mTiemTimeCount
.start();