中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

黑龙江省| 龙井市| 璧山县| 丰城市| 广东省| 登封市| 祁东县| 齐齐哈尔市| 佳木斯市| 兴和县| 通渭县| 黄平县| 山东省| 晋中市| 河源市| 梨树县| 南华县| 九江市| 府谷县| 吉安县| 昌平区| 闽侯县| 营山县| 外汇| 静乐县| 泾阳县| 延安市| 怀仁县| 杭锦后旗| 绍兴市| 怀宁县| 合肥市| 白山市| 林西县| 乌兰县| 阳城县| 金湖县| 河东区| 光山县| 秦皇岛市| 罗平县|