欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

扣丁學堂Android培訓之如何獲取短信驗證碼并自動填充

2018-07-16 13:03:00 1504瀏覽

在現(xiàn)如今,隨著互聯(lián)網時代飛速的發(fā)展和進步,目前大部分軟件里面注冊信息,都需要短信驗證嗎功能,同時為了避免用戶自己輸入導致的繁瑣操作,有一部分app設計者將其設置成了自動填充的方式,而今天扣丁學堂給大家分享了Android培訓之自動填充短信驗證碼的具體代碼,首先利用廣播接收器來攔截短信獲取其中匹配的內容,提供回掉,將短信內容暴露到activity中實現(xiàn)自動填充,下面我們一起來看一下吧。



首先我們要實現(xiàn)一個廣播接收器

  packagecom.wquant.weilt.reciver;
  importjava.util.regex.Matcher;
  importjava.util.regex.Pattern;
  importandroid.content.BroadcastReceiver;
  importandroid.content.Context;
  importandroid.content.Intent;
  importandroid.os.Bundle;
  importandroid.os.Message;
  importandroid.telephony.SmsMessage;
  importandroid.text.TextUtils;
  importandroid.util.Log;
  publicclassSmsReciverextendsBroadcastReceiver{
  privateStringpatternCoder="(?<!\\d)\\d{6}(?!\\d)";
  @Override
  publicvoidonReceive(Contextcontext,Intentintent){
  //獲取短信數(shù)據(jù)
  Object[]objs=(Object[])intent.getExtras().get("pdus");
  for(Objectobj:objs){
  byte[]pdu=(byte[])obj;
  //將字節(jié)數(shù)組封裝成為smsmessage對象
  SmsMessagesms=SmsMessage.createFromPdu(pdu);
  //獲得短短信內容
  Stringmessage=sms.getMessageBody();
  Log.d("短信內容","message:"+message);
  //短息的手機號。。+86開頭?
  Stringfrom=sms.getOriginatingAddress();
  Log.d("短信來源","from:"+from);
  if(!TextUtils.isEmpty(from)){
  Stringcode=patternCode(message);
  if(!TextUtils.isEmpty(code)){
  mMessageListener.onReceived(code);
  }
  }
  }
  }
  /**
  *匹配短信中間的6個數(shù)字(驗證碼等)
  *
  *@parampatternContent
  *@return
  */
  privateStringpatternCode(StringpatternContent){
  if(TextUtils.isEmpty(patternContent)){
  returnnull;
  }
  Patternp=Pattern.compile(patternCoder);
  Matchermatcher=p.matcher(patternContent);
  if(matcher.find()){
  returnmatcher.group();
  }
  returnnull;
  }
  //回調接口
  publicinterfaceMessageListener{
  publicvoidonReceived(Stringmessage);
  }
  MessageListenermMessageListener;
  publicvoidsetOnReceivedMessageListener(MessageListenermessageListener){
  this.mMessageListener=messageListener;
  }
  }


ok上面我們已經實現(xiàn)了廣播接收器,在activity中我們要綁定一個意圖過濾器并將此廣播注冊在destory方法中要將其解除注冊

  packagecom.wquant.weilt.controler;
  importorg.apache.http.Header;
  importorg.json.JSONException;
  importorg.json.JSONObject;
  importandroid.content.Intent;
  importandroid.content.IntentFilter;
  importandroid.os.Bundle;
  importandroid.os.CountDownTimer;
  importandroid.view.KeyEvent;
  importandroid.view.View;
  importandroid.widget.Button;
  importandroid.widget.EditText;
  importandroid.widget.ImageView;
  importandroid.widget.TextView;
  importandroid.widget.Toast;
  importcom.loopj.android.http.RequestParams;
  importcom.wquant.weilt.MyApplication;
  importcom.wquant.weilt.R;
  importcom.wquant.weilt.control.base.JsonHttpResponseHandlerBase;
  importcom.wquant.weilt.control.base.MyBaseActivity;
  importcom.wquant.weilt.reciver.SmsReciver;
  importcom.wquant.weilt.reciver.SmsReciver.MessageListener;
  importcom.wquant.weilt.util.CToast;
  importcom.wquant.weilt.util.CommonUtil;
  importcom.wquant.weilt.util.Constant;
  importcom.wquant.weilt.util.HttpUtil;
  /**
  *修改密碼
  *
  *@authorzhaomy
  *
  */
  publicclassRestartLoginOrTradPwdActivityextendsMyBaseActivity{
  SmsReciverreciver;
  @Override
  protectedvoidonCreate(BundlesavedInstanceState){
  //TODOAuto-generatedmethodstub
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_restart_login_or_trad);
  init();
  }
  privatevoidinit(){
  code=(EditText)findViewById(R.id.register_code);
  reciver=newSmsReciver();
  IntentFilterfilter=newIntentFilter();
  //設置短信攔截參數(shù)
  filter.addAction("android.provider.Telephony.SMS_RECEIVED");
  //設置最大優(yōu)先級
  filter.setPriority(Integer.MAX_VALUE);
  registerReceiver(reciver,filter);
  reciver.setOnReceivedMessageListener(newMessageListener(){
  @Override
  publicvoidonReceived(Stringmessage){
  code.setText(message);
  }
  });
  }
  @Override
  protectedvoidonPause(){
  super.onPause();
  }
  @Override
  protectedvoidonDestroy(){
  unregisterReceiver(reciver);
  super.onDestroy();
  }
  }

扣丁學堂微信公眾號



【關注微信公眾號獲取更多學習資料】



查看更多關于“Android開發(fā)技術的相關資訊>>

標簽: Android開發(fā)從入門到精通 Android學習路線圖 Android培訓 Android開發(fā)工程師 Android視頻教程

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權所有   北京市海淀區(qū)寶盛北里西區(qū)28號中關村智誠科創(chuàng)大廈4層
京ICP備2021002079號-2   Copyright ? 2017 - 2022
返回頂部 返回頂部