读取验证码原理:
发送短信广播进行端短信的监听,收到短信后,从短信的内容上读取里面的验证码操作
主要用到的类有:
IntentFilter()
new BroadcastReceiver()
好了 ,我们开始进行读取验证码了
权限声明
<uses-permission android:name="android.permission.RECEIVE_SMS"/ >
<uses-permission android:name="android.permission.READ_SMS" />
读取验证码操作
public void getCode() {
filter = new IntentFilter();
// 设置短信拦截参数
filter.addAction( "android.provider.Telephony.SMS_RECEIVED" );
filter.setPriority(Integer. MAX_VALUE);
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();
// 短息的手机号。。+86开头?
String from = sms.getOriginatingAddress();
Log. d("短信来源", "from :" + from);
if (!TextUtils.isEmpty( from)) {
Message msg = new Message();
//短信读取
String code = message.substring(18, 22);
Log. e("Message", code);
msg. what = 1;
Bundle bundle = new Bundle();
bundle.putString( "messagecode", code );
msg.setData( bundle);
handler.sendMessage( msg);
}
}
}
};
context.registerReceiver( smsReceiver, filter );
}