91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android如何實現自動填充短信驗證碼

發布時間:2021-04-17 11:17:02 來源:億速云 閱讀:515 作者:小新 欄目:移動開發

這篇文章將為大家詳細講解有關Android如何實現自動填充短信驗證碼,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

具體內容如下

短信驗證碼是大部分軟件里面都存在的功能,同時為了避免用戶自己輸入導致的繁瑣操作,有一部分app設計者將其設置成了自動填充的方式,方便用戶操作那么這種方式是什么實現的呢。

利用廣播接收器來攔截短信獲取其中匹配的內容,提供回掉,將短信內容暴露到activity中實現自動填充

首先我們要實現一個廣播接收器

package com.wquant.weilt.reciver;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Message;
import android.telephony.SmsMessage;
import android.text.TextUtils;
import android.util.Log;

public class SmsReciver extends BroadcastReceiver {
 private String patternCoder = "(?<!\\d)\\d{6}(?!\\d)";
 @Override
 public void onReceive(Context context, Intent intent) {
  //獲取短信數據
  Object[] objs = (Object[]) intent.getExtras().get("pdus");
  for (Object obj : objs) {
   byte[] pdu = (byte[]) obj;
   //將字節數組封裝成為smsmessage對象
   SmsMessage sms = SmsMessage.createFromPdu(pdu);
   //獲得短短信內容
   String message = sms.getMessageBody();
   Log.d("短信內容", "message:" + message);
   // 短息的手機號。。+86開頭?
   String from = sms.getOriginatingAddress();
   Log.d("短信來源", "from :" + from);
   if (!TextUtils.isEmpty(from)) {
    String code = patternCode(message);
    if (!TextUtils.isEmpty(code)) {
     mMessageListener.onReceived(code);
    }
   }
  }
 }
 /**
  * 匹配短信中間的6個數字(驗證碼等)
  * 
  * @param patternContent
  * @return
  */
 private String patternCode(String patternContent) {
  if (TextUtils.isEmpty(patternContent)) {
   return null;
  }
  Pattern p = Pattern.compile(patternCoder);
  Matcher matcher = p.matcher(patternContent);
  if (matcher.find()) {
   return matcher.group();
  }
  return null;
 }

 // 回調接口
 public interface MessageListener {
  public void onReceived(String message);
 }

 MessageListener mMessageListener;

 public void setOnReceivedMessageListener(MessageListener messageListener) {
  this.mMessageListener = messageListener;
 }
}

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

package com.wquant.weilt.controler;

import org.apache.http.Header;
import org.json.JSONException;
import org.json.JSONObject;

import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.loopj.android.http.RequestParams;
import com.wquant.weilt.MyApplication;
import com.wquant.weilt.R;
import com.wquant.weilt.control.base.JsonHttpResponseHandlerBase;
import com.wquant.weilt.control.base.MyBaseActivity;
import com.wquant.weilt.reciver.SmsReciver;
import com.wquant.weilt.reciver.SmsReciver.MessageListener;
import com.wquant.weilt.util.CToast;
import com.wquant.weilt.util.CommonUtil;
import com.wquant.weilt.util.Constant;
import com.wquant.weilt.util.HttpUtil;

/**
 * 修改密碼
 * 
 * @author zhaomy
 * 
 */
public class RestartLoginOrTradPwdActivity extends MyBaseActivity {

 SmsReciver reciver;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_restart_login_or_trad);

  init();
 }

 private void init() {
  code = (EditText) findViewById(R.id.register_code);
  reciver=new SmsReciver();
  IntentFilter filter = new IntentFilter();
  // 設置短信攔截參數
  filter.addAction("android.provider.Telephony.SMS_RECEIVED");
  //設置最大優先級
  filter.setPriority(Integer.MAX_VALUE);
  registerReceiver(reciver, filter);
  reciver.setOnReceivedMessageListener(new MessageListener() {

   @Override
   public void onReceived(String message) {
    code.setText(message);
   }
  });
 }
 @Override
 protected void onPause() {
  super.onPause();
 }
 @Override
 protected void onDestroy() {
  unregisterReceiver(reciver);
  super.onDestroy();
 }
}

關于“Android如何實現自動填充短信驗證碼”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安西县| 潼南县| 永清县| 邓州市| 油尖旺区| 东丰县| 菏泽市| 胶南市| 安福县| 四川省| 蒙城县| 肃宁县| 平江县| 体育| 宜春市| 客服| 漳州市| 津南区| 沂源县| 霍邱县| 上犹县| 东山县| 和田市| 海宁市| 涡阳县| 逊克县| 泉州市| 丰县| 长丰县| 枞阳县| 长春市| 南皮县| 双柏县| 湘潭县| 大同市| 措勤县| 邵东县| 安国市| 永泰县| 贵定县| 博野县|