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

Android實(shí)現(xiàn)自動(dòng)填充短信驗(yàn)證碼功能

 更新時(shí)間:2018年12月17日 17:17:07   作者:程龍_  
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)自動(dòng)填充短信驗(yàn)證碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

前言

短信驗(yàn)證碼獲取并自動(dòng)填寫現(xiàn)在已經(jīng)成為一個(gè)人性化App的標(biāo)配了,這篇文章將實(shí)現(xiàn)一個(gè)短信驗(yàn)證碼獲取并自動(dòng)填寫的demo。其實(shí)就是讀取指定號(hào)碼的短信并提取出驗(yàn)證碼,然后賦值給EditText顯示。

demo效果圖:

讀取短信

Android系統(tǒng)在接受到一條短信的時(shí)候會(huì)發(fā)出一條Action為android.provider.Telephony.SMS_RECEIVED的有序廣播,因此我們讀取短信的驗(yàn)證碼只需要監(jiān)聽這個(gè)廣播然后提取出短信中的驗(yàn)證碼即可,如:

/**
* Created by 程龍 on 2018/9/27.
*/

public class SMSBroadcastReceiver extends BroadcastReceiver {

 private static final String TAG = "SMSBroadcastReceiver";
 private OnReceiveSMSListener mOnReceiveSMSListener;
 public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";

 @Override
 public void onReceive(Context context, Intent intent) {
  if (intent.getAction().equals(SMS_RECEIVED_ACTION)) {
   Object[] pdus = (Object[]) intent.getExtras().get("pdus");
   for(Object pdu:pdus) {
    SmsMessage smsMessage = SmsMessage.createFromPdu((byte [])pdu);
    // 短信號(hào)碼
    String sender = smsMessage.getDisplayOriginatingAddress();
    Log.d(TAG,sender+"");
    //短信內(nèi)容
    String content = smsMessage.getDisplayMessageBody();
    // 篩選
    if ("短信發(fā)送方號(hào)碼".equals(sender) && mOnReceiveSMSListener!= null) {
     Pattern pattern = Pattern.compile("\\d+");
     Matcher matcher = pattern.matcher(content);
     if(matcher.find()) {
      mOnReceiveSMSListener.onReceived(matcher.group());
     }
     abortBroadcast();
    }
   }
  }

 }

 /**
 * 回調(diào)接口
 */
 public interface OnReceiveSMSListener {
  void onReceived(String message);
 }


 public void setOnReceiveSMSListener(OnReceiveSMSListener onReceiveSMSListener) {
  mOnReceiveSMSListener = onReceiveSMSListener;
 }
}

代碼注釋比較清楚,通過SmsMessage對(duì)象可以得到短信的發(fā)送號(hào)碼,短信內(nèi)容及相關(guān)信息。當(dāng)短信號(hào)碼為你要讀取的短信發(fā)送方號(hào)碼時(shí)用正則表達(dá)式提取出短信內(nèi)容的驗(yàn)證碼,然后通過調(diào)用監(jiān)聽器的回調(diào)方法更新相應(yīng)的UI。這里只需將短信驗(yàn)證發(fā)送方號(hào)碼替換成相應(yīng)的號(hào)碼即可,如“106903561008710”為騰訊云注冊(cè)發(fā)送的短信號(hào)碼。

通常,我們只會(huì)在注冊(cè)或登錄頁面讀取短信驗(yàn)證碼,所以,我們采用動(dòng)態(tài)注冊(cè)廣播的方式注冊(cè)這個(gè)廣播,如:

// 注冊(cè)廣播
IntentFilter intentFilter = new IntentFilter(SMSBroadcastReceiver.SMS_RECEIVED_ACTION);
// 設(shè)置優(yōu)先級(jí)
intentFilter.setPriority(Integer.MAX_VALUE);
registerReceiver(mSMSBroadcastReceiver,intentFilter);

取消注冊(cè)

@Override
protected void onDestroy() {
 super.onDestroy();
 unregisterReceiver(mSMSBroadcastReceiver);
}

MainActivity.java的代碼為:

public class MainActivity extends AppCompatActivity implements SMSBroadcastReceiver.OnReceiveSMSListener {

 private SMSBroadcastReceiver mSMSBroadcastReceiver = new SMSBroadcastReceiver();
 private EditText mEt_code;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  mEt_code = (EditText) findViewById(R.id.et_code);
  mSMSBroadcastReceiver.setOnReceiveSMSListener(this);
  // 注冊(cè)廣播
  IntentFilter intentFilter = new IntentFilter(SMSBroadcastReceiver.SMS_RECEIVED_ACTION);
  // 設(shè)置優(yōu)先級(jí)
  intentFilter.setPriority(Integer.MAX_VALUE);
  registerReceiver(mSMSBroadcastReceiver,intentFilter);
 }

 @Override
 public void onReceived(String message) {
  mEt_code.setText(message+"");
 }

 @Override
 protected void onDestroy() {
  super.onDestroy();
  unregisterReceiver(mSMSBroadcastReceiver);
 }
}

這個(gè)demo的代碼實(shí)現(xiàn)比較簡(jiǎn)單,就是監(jiān)聽廣播,讀取收到的短信,然后過濾篩選出我們要的驗(yàn)證碼短信,再用正則表達(dá)式提取到驗(yàn)證碼設(shè)置給EditText顯示即可。大家下載或者自己編寫這個(gè)demo并更改發(fā)送方短信號(hào)碼運(yùn)行,然后可以找個(gè)注冊(cè)網(wǎng)址或是模擬驗(yàn)證碼短信進(jìn)行測(cè)試。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android實(shí)現(xiàn)布局動(dòng)畫和共享動(dòng)畫的結(jié)合效果

    Android實(shí)現(xiàn)布局動(dòng)畫和共享動(dòng)畫的結(jié)合效果

    今天給大家?guī)砟軌蛱嵘脩趔w驗(yàn)感的交互動(dòng)畫,使用起來非常簡(jiǎn)單,體驗(yàn)效果非常贊,其中僅使用到布局動(dòng)畫和共享動(dòng)畫,文章通過代碼示例介紹的非常詳細(xì),感興趣的同學(xué)可以自己動(dòng)手試一試
    2023-09-09
  • Android Selector 按下修改背景和文本顏色的實(shí)現(xiàn)代碼

    Android Selector 按下修改背景和文本顏色的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Android Selector 按下修改背景和文本顏色的實(shí)現(xiàn)代碼,本文通過實(shí)例代碼和demo展示給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Android UI組件AppWidget控件入門詳解

    Android UI組件AppWidget控件入門詳解

    這篇文章主要介紹了Android UI組件AppWidget控件入門,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • android 全屏去掉底部虛擬導(dǎo)航欄的方法

    android 全屏去掉底部虛擬導(dǎo)航欄的方法

    今天小編就為大家分享一篇android 全屏去掉底部虛擬導(dǎo)航欄的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Android解析json數(shù)據(jù)示例代碼(三種方式)

    Android解析json數(shù)據(jù)示例代碼(三種方式)

    本篇文章主要介紹了Android解析json數(shù)據(jù)示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • Android 靜默安裝和卸載的方法

    Android 靜默安裝和卸載的方法

    本篇文章主要介紹了Android 靜默安裝和卸載的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • Android錄音功能的實(shí)現(xiàn)以及踩坑實(shí)戰(zhàn)記錄

    Android錄音功能的實(shí)現(xiàn)以及踩坑實(shí)戰(zhàn)記錄

    在Android 開發(fā)過程中,有些功能是通用的,或者是多個(gè)業(yè)務(wù)方都需要使用的,下面這篇文章主要給大家介紹了關(guān)于Android錄音功能的實(shí)現(xiàn)以及踩坑的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • Android中使用ListView模擬微信好友功能

    Android中使用ListView模擬微信好友功能

    這篇文章主要介紹了Android中使用ListView模擬微信好友功能,需要的朋友可以參考下
    2017-08-08
  • Android手機(jī)開發(fā)設(shè)計(jì)之記事本功能

    Android手機(jī)開發(fā)設(shè)計(jì)之記事本功能

    這篇文章主要為大家詳細(xì)介紹了Android手機(jī)開發(fā)設(shè)計(jì)之記事本功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 詳解Android中AIDL的使用

    詳解Android中AIDL的使用

    AIDL是Android Interface definition language的縮寫,對(duì)于小白來說,AIDL的作用是讓你可以在自己的APP里綁定一個(gè)其他APP的service,這樣你的APP可以和其他APP交互,接下來通過本文給大家分享Android AIDL使用,需要的朋友參考下吧
    2021-07-07

最新評(píng)論

比如县| 龙陵县| 库尔勒市| 绥棱县| 会宁县| 洪江市| 武定县| 渭南市| 天门市| 汤原县| 莱芜市| 将乐县| 丹凤县| 普安县| 新乡市| 株洲市| 启东市| 随州市| 孝义市| 荣成市| 富民县| 新兴县| 武城县| 尤溪县| 湛江市| 曲阳县| 邵武市| 团风县| 深泽县| 闽清县| 柳江县| 巴南区| 雷州市| 育儿| 岳池县| 马尔康县| 龙口市| 宁城县| 余干县| 喀什市| 文成县|