android自动接收并填充短信验证码

这只是部分代码。大家直接拷贝相应代码到自己的activity里对应位置即可。

public EditText re_check;
private BroadcastReceiver smsReceiver;
private IntentFilter filter2;
private String strContent;
private String patternCoder = "(?<!\\d)\\d{6}(?!\\d)";//匹配六位数字的正则表达式
private Handler handler2 = new Handler() {
  public void handleMessage(android.os.Message msg) {
   re_check.setText(strContent);
  };
 };
 
@Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  setContentView(R.layout.act_register);
  re_check = (EditText) findViewById(R.id.re_regcode);
  init();
 
}
 
private void init() {
  filter2 = new IntentFilter();
  filter2.addAction("android.provider.Telephony.SMS_RECEIVED");
  filter2.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();
     // 短息的手机号
     String from = sms.getOriginatingAddress();
     if (!TextUtils.isEmpty(from)) {
      String code = patternCode(message);
      if (!TextUtils.isEmpty(code)) {
       strContent = code;
       handler2.sendEmptyMessage(1);
      }
     }
    }
   }  };
  registerReceiver(smsReceiver, filter2);
}
 
/**
  * 匹配短信中间的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;
 }
 @Override
 protected void onDestroy() {
  super.onDestroy();
  unregisterReceiver(smsReceiver);
 }


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值