Android利用广播接收器实现自动填充短信验证码

Android利用广播接收器实现自动填充短信验证码,第1张

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

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

首先我们需要新建一个名为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()) {      Sy@[email protected](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利用广播接收器实现自动填充短信验证码所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1143400.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存