欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

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

前言

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),民樂(lè)企業(yè)網(wǎng)站建設(shè),民樂(lè)品牌網(wǎng)站建設(shè),網(wǎng)站定制,民樂(lè)網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,民樂(lè)網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

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

demo效果圖:

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

讀取短信

Android系統(tǒng)在接受到一條短信的時(shí)候會(huì)發(fā)出一條Action為android.provider.Telephony.SMS_RECEIVED的有序廣播,因此我們讀取短信的驗(yàn)證碼只需要監(jiān)聽(tīng)這個(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;
 }
}

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

通常,我們只會(huì)在注冊(cè)或登錄頁(yè)面讀取短信驗(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)聽(tīng)廣播,讀取收到的短信,然后過(guò)濾篩選出我們要的驗(yàn)證碼短信,再用正則表達(dá)式提取到驗(yàn)證碼設(shè)置給EditText顯示即可。大家下載或者自己編寫(xiě)這個(gè)demo并更改發(fā)送方短信號(hào)碼運(yùn)行,然后可以找個(gè)注冊(cè)網(wǎng)址或是模擬驗(yàn)證碼短信進(jìn)行測(cè)試。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

網(wǎng)站欄目:Android實(shí)現(xiàn)自動(dòng)填充短信驗(yàn)證碼功能
網(wǎng)址分享:http://www.chinadenli.net/article0/ippcoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)網(wǎng)站改版軟件開(kāi)發(fā)定制網(wǎng)站搜索引擎優(yōu)化網(wǎng)站維護(hù)

廣告

聲明:本網(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)

成都定制網(wǎng)站建設(shè)