1、定义短信广播Receiver
@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("短信内容", "message:" + message);
String from = sms.getOriginatingAddress();
Log.d("短信来源", "from :" + from);
if ("10690583044032".equals(from)) {
//匹配短信中间的6个数字(验证码等)
String code = patternCode(message);
if (!TextUtils.isEmpty(code)) {
Message msg=new Message();
msg.what=1;
Bundle bundle=new Bundle();
bundle.putString("messagecode", code);
msg.setData(bundle);
handler.sendMessage(msg);
}
}
}
}
2、注册短信广播
IntentFilter filter = new IntentFilter();
filter.addAction("android.provider.Telephony.SMS_RECEIVED");
filter.setPriority(Integer.MAX_VALUE);
ReadMmsReceiver readMmsReceiver = new ReadMmsReceiver(handler);
registerReceiver(readMmsReceiver, filter);
3、短信读取权限
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />