Android利用廣播接收器實(shí)現(xiàn)自動(dòng)填充短信驗(yàn)證碼-創(chuàng)新互聯(lián)

今天博主帶給小伙伴們一個(gè)小功能,就是利用廣播接收器實(shí)現(xiàn)自動(dòng)填充短信驗(yàn)證碼,話不多說(shuō),我們先看看如何去實(shí)現(xiàn)這個(gè)小功能。

創(chuàng)新互聯(lián)建站科技有限公司專(zhuān)業(yè)互聯(lián)網(wǎng)基礎(chǔ)服務(wù)商,為您提供成都棕樹(shù)電信機(jī)房高防服務(wù)器,成都IDC機(jī)房托管,成都主機(jī)托管等互聯(lián)網(wǎng)服務(wù)。

首先我們需要新建一個(gè)名為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();
          //短信內(nèi)容
          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);

          //過(guò)濾不需要讀取的短信的發(fā)送號(hào)碼,博主這里用的是關(guān)鍵詞過(guò)濾,小伙伴們也可以用電話號(hào)去過(guò)濾
          if (content.contains("***")&&content.contains("****")
              &&content.contains("***")) {
            //從短信內(nèi)容中獲取驗(yàn)證碼
            String code=getCode(content,6);
             //回調(diào)數(shù)據(jù)
            mMessageListener.onReceived(code);
            abortBroadcast();
          }
        }
      }

  }

  //回調(diào)接口
  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})是得到一個(gè)連續(xù)的YZMLENGTH位數(shù)字字母組合
    // (?<![a-zA-Z0-9])負(fù)向斷言([0-9]{YZMLENGTH})前面不能有數(shù)字
    // (?![a-zA-Z0-9])斷言([0-9]{YZMLENGTH})后面不能有數(shù)字出現(xiàn)


    // 獲得數(shù)字字母組合
    //  Pattern p = Pattern  .compile("(?<![0-9])([a-zA-Z0-9]{" + YZMLENGTH + "})(?![a-zA-Z0-9])");

    // 獲得純數(shù)字
    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;
  }
}

文章題目:Android利用廣播接收器實(shí)現(xiàn)自動(dòng)填充短信驗(yàn)證碼-創(chuàng)新互聯(lián)
標(biāo)題來(lái)源:http://muchs.cn/article28/dpgocp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、軟件開(kāi)發(fā)網(wǎng)站排名、App開(kāi)發(fā)自適應(yīng)網(wǎng)站、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)