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

首頁 > 系統 > Android > 正文

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

2019-10-22 18:20:34
字體:
來源:轉載
供稿:網友

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

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

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

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


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 称多县| 吉安县| 红桥区| 樟树市| 库车县| 镇赉县| 宁陕县| 六枝特区| 大渡口区| 屏南县| 沽源县| 饶平县| 二连浩特市| 河津市| 句容市| 沭阳县| 桂林市| 屯昌县| 上犹县| 沧州市| 平阴县| 辽源市| 五寨县| 佛山市| 清水河县| 延川县| 漳浦县| 庆城县| 额尔古纳市| 江西省| 烟台市| 五家渠市| 天水市| 股票| 静海县| 焉耆| 青阳县| 大埔区| 阳朔县| 伊吾县| 凌海市|