国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android利用廣播接收器實現自動填充短信驗證碼

2019-12-12 01:29:41
字體:
來源:轉載
供稿:網友

今天博主帶給小伙伴們一個小功能,就是利用廣播接收器實現自動填充短信驗證碼,話不多說,我們先看看如何去實現這個小功能。

首先我們需要新建一個名為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);  }

至此我們自動填寫驗證碼的功能就實現了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安泽县| 通州市| 阳原县| 张家港市| 延长县| 文水县| 花莲市| 东兰县| 新巴尔虎左旗| 隆昌县| 百色市| 津南区| 日照市| 盘山县| 宁国市| 怀集县| 万州区| 汶川县| 平江县| 惠水县| 福贡县| 武陟县| 凤阳县| 塘沽区| 焦作市| 永顺县| 平果县| 淮北市| 大冶市| 大化| 图们市| 昌平区| 西城区| 明溪县| 洮南市| 阳泉市| 岗巴县| 汉川市| 出国| 沁阳市| 建阳市|