Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android利用广播接收器实现自动填充短信验证码大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

今天博主带给小伙伴们一个小功能,就是利用广播接收器实现自动填充短信验证码,话不多说,我们先看看如何去实现这个小功能

首先我们需要新建一个名为SMSBroadcastReceiver的广播接收器,代码如下:

public class SMSBroadcastReceiver extends BroadcastReceiver {

  private static messageListener mmessageListener;

  public SMSBroadcastReceiver() {
    super();
  }

  @Override
  public void onReceive(Context context,Intent intent) {
      public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";
      if (intent.getAction().equals(SMS_RECEIVED_ACTION)) {
        Object[] pdus = (Object[]) intent.getExtras().get("pdus");
        for(Object pdu:pdus) {
          Smsmessage smsmessage = Smsmessage.createFromPdu((byte [])pdu);
          String sender = smsmessage.getDisplayOriginaTingAddress();
          //短信内容
          String content = smsmessage.getDisplaymessageBody();
          long date = smsmessage.gettimestampMillis();
          Date tiemDate = new Date(datE);
          SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          String time = simpleDateFormat.format(tiemDatE);

          //过滤不需要读取的短信的发送号码,博主这里用的是关键词过滤,小伙伴们也可以用电话号去过滤
          if (content.contains("***")&&content.contains("****")
              &&content.contains("***")) {
            //从短信内容获取验证码
            String code=getCode(content,6);
             //回调数据
            mmessagelistener.onReceived(codE);
            abortBroadcast();
          }
        }
      }

  }

  //回调接口
  public interface messageListener {
    public void onReceived(String messagE);
  }

  public void setOnReceivedmessageListener(messageListener messageListener) {
    this.mmessageListener = messageListener;
  }

  public static String getCode(String body,int YZMLENGTH) {
    // 首先([a-zA-Z0-9]{YZMLENGTH})是得到一个连续的YZMLENGTH位数字字母组合
    // (?<![a-zA-Z0-9])负向断言([0-9]{YZMLENGTH})前面不能有数字
    // (?![a-zA-Z0-9])断言([0-9]{YZMLENGTH})后面不能有数字出现


    // 获得数字字母组合
    //  Pattern p = Pattern  .compile("(?<![0-9])([a-zA-Z0-9]{" + YZMLENGTH + "})(?![a-zA-Z0-9])");

    // 获得纯数字
    Pattern p = Pattern.compile("(?<![0-9])([0-9]{" + YZMLENGTH+ "})(?![0-9])");

    Matcher m = p.matcher(body);
    if (m.find()) {
      System.out.println(m.group());
      return m.group(0);
    }
    return null;
  }
}

至此我们短信的广播接收器就完成了。

之后我们需要完成注册广播接收器以及填写验证码的代码,完成代码如下:

private void initSmsReader(){
    public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";
    //生成广播处理
    mSMSBroadcastReceiver = new SMSBroadcastReceiver();

    //实例化过滤器并设置要过滤的广播
    IntentFilter intentFilter = new IntentFilter(SMS_RECEIVED_ACTION);
    //设置优先级
    intentFilter.setPriority(Integer.max_value);
    //注册广播
    this.registerReceiver(mSMSBroadcastReceiver,intentFilter);

    mSMSBroadcastReceiver.setOnReceivedmessageListener(new SMSBroadcastReceiver.messageListener() {
      @Override
      public void onReceived(String messagE) {
    //在相应的编辑框中填写验证码
        passCode.setText(messagE);

      }
    });
  }

  @Override
  protected void onStart() {
    super.onStart();
    initSmsReader();
  }

  @Override
  protected void onDestroy() {
    super.onDestroy();
    //注销短信监听广播
    thiS.UnregisterReceiver(mSMSBroadcastReceiver);
  }

至此我们自动填写验证码的功能就实现了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

大佬总结

以上是大佬教程为你收集整理的Android利用广播接收器实现自动填充短信验证码全部内容,希望文章能够帮你解决Android利用广播接收器实现自动填充短信验证码所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。