最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android利用廣播接收器實現(xiàn)自動填充短信驗證碼

 更新時間:2017年12月12日 15:27:11   作者:spy_develop  
這篇文章主要為大家詳細介紹了Android利用廣播接收器實現(xiàn)自動填充短信驗證碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

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

          //過濾不需要讀取的短信的發(fā)送號碼,博主這里用的是關鍵詞過濾,小伙伴們也可以用電話號去過濾
          if (content.contains("***")&&content.contains("****")
              &&content.contains("***")) {
            //從短信內(nèi)容中獲取驗證碼
            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})是得到一個連續(xù)的YZMLENGTH位數(shù)字字母組合
    // (?<![a-zA-Z0-9])負向斷言([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;
  }
}

至此我們短信的廣播接收器就完成了。

之后我們需要完成注冊廣播接收器以及填寫驗證碼的代碼,完成代碼如下:

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);
    //設置優(yōu)先級
    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();
    //注銷短信監(jiān)聽廣播
    this.unregisterReceiver(mSMSBroadcastReceiver);
  }

至此我們自動填寫驗證碼的功能就實現(xiàn)了。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Android基于hover組件實現(xiàn)監(jiān)控鼠標移動事件的方法

    Android基于hover組件實現(xiàn)監(jiān)控鼠標移動事件的方法

    這篇文章主要介紹了Android基于hover組件實現(xiàn)監(jiān)控鼠標移動事件的方法,結(jié)合實例形式分析了hover組件監(jiān)控鼠標光標在view上變化的操作技巧,需要的朋友可以參考下
    2017-02-02
  • android app icon 圖標大小尺寸

    android app icon 圖標大小尺寸

    應用程序圖標 (Icon)應當是一個 Alpha 通道透明的32位 PNG 圖片。由于安卓設備眾多,一個應用程序圖標需要設計幾種不同大小。
    2016-05-05
  • Android 側(cè)滑關閉Activity的實例

    Android 側(cè)滑關閉Activity的實例

    這篇文章主要介紹了Android 側(cè)滑關閉Activity的實例的相關資料,好的手機現(xiàn)在沒有物理返回鍵,或者說統(tǒng)一Android 與IOS 軟件功能的時候,需要側(cè)滑關閉,需要的朋友可以參考下
    2017-07-07
  • Android自定義View繪制貝塞爾曲線實現(xiàn)流程

    Android自定義View繪制貝塞爾曲線實現(xiàn)流程

    貝塞爾曲線的本質(zhì)是通過數(shù)學計算的公式來繪制平滑的曲線,分為一階,二階,三階及多階。但是這里不講數(shù)學公式和驗證,那些偉大的數(shù)學家已經(jīng)證明過了,所以就只講講Android開發(fā)中的運用吧
    2022-11-11
  • Android?NDK開發(fā)(C語言--聯(lián)合體與枚舉)

    Android?NDK開發(fā)(C語言--聯(lián)合體與枚舉)

    這篇文章主要介紹了Android?NDK開發(fā)C語言聯(lián)合體與枚舉,共用體是一種特殊的數(shù)據(jù)類型,允許您在相同的內(nèi)存位置存儲不同的數(shù)據(jù)類型。您可以定義一個帶有多成員的共用體,但是任何時候只能有一個成員帶有值。下面詳細介紹該內(nèi)容,需要的朋友可以參考一下
    2021-12-12
  • listView的item中有checkbox,導致setOnItemClick失效的原因及解決辦法

    listView的item中有checkbox,導致setOnItemClick失效的原因及解決辦法

    這篇文章主要介紹了listView的item中有checkbox,導致setOnItemClick失效的原因及解決辦法,需要的朋友可以參考下
    2017-01-01
  • Android View移動的3種方式總結(jié)

    Android View移動的3種方式總結(jié)

    這篇文章主要給大家介紹了Android View移動的三種方式,在介紹這三種方式之前先介紹了Android坐標系的定義規(guī)則以及View的一些位置參數(shù)。有需要的朋友們可以參考借鑒。
    2016-09-09
  • 詳解Flutter中視頻播放器插件的使用教程

    詳解Flutter中視頻播放器插件的使用教程

    視頻播放器插件是可用于Flutter的常用插件之一,在這篇文章中,將學習如何應用視頻播放器插件以及控制視頻播放器的不同功能,感興趣的可以了解一下
    2022-02-02
  • Android實現(xiàn)ViewPager無限循環(huán)效果(一)

    Android實現(xiàn)ViewPager無限循環(huán)效果(一)

    這篇文章主要為大家詳細介紹了Android實現(xiàn)ViewPager無限循環(huán)效果的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Android實現(xiàn)圖片上傳蒙層進度條

    Android實現(xiàn)圖片上傳蒙層進度條

    這篇文章主要為大家詳細介紹了Android實現(xiàn)圖片上傳蒙層進度條,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09

最新評論

汽车| 安丘市| 郁南县| 建阳市| 思南县| 宜春市| 孟州市| 昭平县| 丹江口市| 青河县| 梁山县| 六枝特区| 塘沽区| 甘德县| 白银市| 三都| 恭城| 兰州市| 侯马市| 横山县| 阆中市| 历史| 峡江县| 民乐县| 新丰县| 铜鼓县| 海兴县| 天水市| 定兴县| 贵阳市| 金门县| 贵定县| 彰化市| 青岛市| 胶南市| 普格县| 哈尔滨市| 子洲县| 贵南县| 营山县| 惠来县|