最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2018年05月17日 09:43:00   作者:Applicaton  
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)自動(dòng)填充短信驗(yàn)證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Android自動(dòng)填充短信驗(yàn)證碼的具體代碼,供大家參考,具體內(nèi)容如下

短信驗(yàn)證碼是大部分軟件里面都存在的功能,同時(shí)為了避免用戶自己輸入導(dǎo)致的繁瑣操作,有一部分app設(shè)計(jì)者將其設(shè)置成了自動(dòng)填充的方式,方便用戶操作那么這種方式是什么實(shí)現(xiàn)的呢。

利用廣播接收器來(lái)攔截短信獲取其中匹配的內(nèi)容,提供回掉,將短信內(nèi)容暴露到activity中實(shí)現(xiàn)自動(dòng)填充

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

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) {
  //獲取短信數(shù)據(jù)
  Object[] objs = (Object[]) intent.getExtras().get("pdus");
  for (Object obj : objs) {
   byte[] pdu = (byte[]) obj;
   //將字節(jié)數(shù)組封裝成為smsmessage對(duì)象
   SmsMessage sms = SmsMessage.createFromPdu(pdu);
   //獲得短短信內(nèi)容
   String message = sms.getMessageBody();
   Log.d("短信內(nèi)容", "message:" + message);
   // 短息的手機(jī)號(hào)。。+86開(kāi)頭?
   String from = sms.getOriginatingAddress();
   Log.d("短信來(lái)源", "from :" + from);
   if (!TextUtils.isEmpty(from)) {
    String code = patternCode(message);
    if (!TextUtils.isEmpty(code)) {
     mMessageListener.onReceived(code);
    }
   }
  }
 }
 /**
  * 匹配短信中間的6個(gè)數(shù)字(驗(yàn)證碼等)
  * 
  * @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;
 }

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

 MessageListener mMessageListener;

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

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

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();
  // 設(shè)置短信攔截參數(shù)
  filter.addAction("android.provider.Telephony.SMS_RECEIVED");
  //設(shè)置最大優(yōu)先級(jí)
  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();
 }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 記錄Android微信分享功能的吐槽與思考

    記錄Android微信分享功能的吐槽與思考

    Android 記錄一次開(kāi)發(fā)微信分享功能的吐槽與思考,感興趣的小伙伴們可以參考一下
    2016-07-07
  • Android App自動(dòng)更新之通知欄下載

    Android App自動(dòng)更新之通知欄下載

    這篇文章主要為大家詳細(xì)介紹了Android App自動(dòng)更新之通知欄下載功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Flutter學(xué)習(xí)之實(shí)現(xiàn)自定義themes詳解

    Flutter學(xué)習(xí)之實(shí)現(xiàn)自定義themes詳解

    一般情況下我們?cè)趂lutter中搭建的app基本上都是用的是MaterialApp這種設(shè)計(jì)模式,MaterialApp中為我們接下來(lái)使用的按鈕,菜單等提供了統(tǒng)一的樣式,那么這種樣式能不能進(jìn)行修改或者自定義呢?答案是肯定的,一起來(lái)看看吧
    2023-03-03
  • Android實(shí)現(xiàn)捕獲未知異常并提交給服務(wù)器的方法

    Android實(shí)現(xiàn)捕獲未知異常并提交給服務(wù)器的方法

    這篇文章主要介紹了Android實(shí)現(xiàn)捕獲未知異常并提交給服務(wù)器的方法,涉及Android的異常與錯(cuò)誤處理機(jī)制相關(guān)操作技巧,需要的朋友可以參考下
    2016-08-08
  • Android自定義表格控件滿足人們對(duì)視覺(jué)的需求

    Android自定義表格控件滿足人們對(duì)視覺(jué)的需求

    隨著人們對(duì)視覺(jué)的需求,基本組件已無(wú)法滿足人們求新求異的要求,于是我們常常會(huì)自定義組件,用來(lái)實(shí)現(xiàn)更美觀的UI界面,接下來(lái)將介紹Android如何自定義表格控件,感興趣的朋友可以了解下,或許對(duì)你學(xué)習(xí)自定義控件有所幫助
    2013-02-02
  • Android Studio添加日志過(guò)濾方式

    Android Studio添加日志過(guò)濾方式

    這篇文章主要介紹了Android Studio添加日志過(guò)濾方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • Android跟隨手指移動(dòng)的控件demo實(shí)例

    Android跟隨手指移動(dòng)的控件demo實(shí)例

    大家好,本篇文章主要講的是Android跟隨手指移動(dòng)的控件demo實(shí)例,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Android實(shí)現(xiàn)圖片上傳蒙層進(jìn)度條

    Android實(shí)現(xiàn)圖片上傳蒙層進(jìn)度條

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)圖片上傳蒙層進(jìn)度條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • 基于linux與windows平臺(tái)下 如何下載android sdk源代碼的方法詳解

    基于linux與windows平臺(tái)下 如何下載android sdk源代碼的方法詳解

    本文主要是介紹在linux和windows平臺(tái)下,如何下載android sdk的源代碼,注意是sdk的源代碼,而不是android的所有源代碼,同時(shí)介紹如何把sdk源代碼加入到eclipse里,使android 平臺(tái)手機(jī)開(kāi)發(fā)者可以直接查看源代碼,通過(guò)閱讀SDK源碼,能更好的理解和運(yùn)用Android的API
    2013-05-05
  • android?studio項(xiàng)目:綁定服務(wù)和線程實(shí)現(xiàn)計(jì)時(shí)器

    android?studio項(xiàng)目:綁定服務(wù)和線程實(shí)現(xiàn)計(jì)時(shí)器

    這篇文章主要介紹了android?studio項(xiàng)目:綁定服務(wù)和線程實(shí)現(xiàn)計(jì)時(shí)器,完成一個(gè)秒表,具備啟停功能,通過(guò)綁定服務(wù)實(shí)現(xiàn)功能,通過(guò)Thread+handler更新界面,需要的朋友可以參考一下
    2021-12-12

最新評(píng)論

山东省| 离岛区| 丹棱县| 游戏| 潜山县| 桑日县| 浪卡子县| 兴和县| 武陟县| 东阿县| 海门市| 富阳市| 鄂托克前旗| 北宁市| 三都| 张北县| 布尔津县| 富宁县| 仁寿县| 南通市| 寻甸| 和顺县| 营山县| 南陵县| 永昌县| 吉首市| 务川| 习水县| 喀喇沁旗| 镇坪县| 胶南市| 昌吉市| 临朐县| 雅安市| 时尚| 嘉祥县| 玉树县| 阆中市| 黄龙县| 庆安县| 宜都市|