2018-07-16 13:03:00 1504瀏覽
在現(xiàn)如今,隨著互聯(lián)網時代飛速的發(fā)展和進步,目前大部分軟件里面注冊信息,都需要短信驗證嗎功能,同時為了避免用戶自己輸入導致的繁瑣操作,有一部分app設計者將其設置成了自動填充的方式,而今天扣丁學堂給大家分享了Android培訓之自動填充短信驗證碼的具體代碼,首先利用廣播接收器來攔截短信獲取其中匹配的內容,提供回掉,將短信內容暴露到activity中實現(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; } }
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ā)技術”的相關資訊>>