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

Android采取BroadcastReceiver方式自動獲取驗證碼

 更新時間:2016年08月03日 09:27:06   投稿:lijiao  
這篇文章主要介紹了Android采取BroadcastReceiver方式自動獲取驗證碼,感興趣的小伙伴們可以參考一下

Android 自動獲取驗證碼的兩種方式分別是BroadcastReceiver及ContentObserver,兩種方式都需要進行注冊、取消注冊兩個步驟
記得添加權限,本文先介紹其中一種。

<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_SMS"/>

方式一:BroadcastReceiver 自定義廣播

/**
 * Created by weifeiyang on 2016/7/29 0029.
 */

import android.annotation.TargetApi;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build;
import android.telephony.SmsMessage;
import android.util.Log;

/**
 * 短信監(jiān)聽
 *
 * @author
 */
public class SMSBroadcastReceiver extends BroadcastReceiver {

  private static MessageListener mMessageListener;
  public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";//只要注冊聲明權限即可收到、阻斷

  @TargetApi(Build.VERSION_CODES.M)
  @Override
  public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(SMS_RECEIVED_ACTION)) {
      //獲得短信數據
      Object[] pdus = (Object[]) intent.getExtras().get("pdus");
      //短信的類型, GSM與CDMA短信的解碼方式不同
      String format = intent.getStringExtra("format");

      if (null != pdus) {
        for (Object pdu : pdus) {
          Log.e("pdu", "format" + format);
          //23以上版本顯示 createFromPdu過時,多加一個format參數即可
          SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdu, format);
          //發(fā)送號碼-可以過濾需要讀取的短信的發(fā)送號碼
          String sender = smsMessage.getDisplayOriginatingAddress();
          //短信內容
          String content = smsMessage.getDisplayMessageBody();
          if (content.contains("你從服務器上獲取到的驗證碼")){
            mMessageListener.onReceived(content);
            abortBroadcast();//中斷廣播的繼續(xù)傳遞,防止優(yōu)先級低的獲取到
          }
        }
      }

    }

  }

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

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

其中關于format的解釋如下,3GPP與3GPP2掃盲

3GPP

     3GPP是針對GSM手機,擴展名為.3gp。第三代合作伙伴計劃(3rdGenerationPartnershipProject,即3GPP)是一個成立于1998年12月的標準化機構。目前其成員包括歐洲的ETSI、日本的ARIB和TTC、中國的CCSA、韓國的TTA和北美的ATIS。
    3GPP的目標是在ITU的IMT-2000計劃范圍內制訂和實現(xiàn)全球性的(第三代)行動電話系統(tǒng)規(guī)范。它致力于GSM到UMTS(WCDMA)的演化,雖然GSM到WCDMA空中接口差別很大,但是其核心網采用了GPRS的框架,因此仍然保持延續(xù)性。

3GPP2

   3GPP2是針對CDMA手機,擴展名為.3g2。第三代合作伙伴計劃2(3rdGenerationPartnershipProject2,即3GPP2)建立于1998年12月,成員包括:TIA(北美)、CCSA(中國)、ARIB/TTC(日本)和TTA(韓國)。
    3GPP2致力于使ITU的IMT-2000計劃中的(3G)行動電話系統(tǒng)規(guī)范在全球的發(fā)展,實際上它是從2G的CDMAOne或者IS-95發(fā)展而來的CDMA2000標準體系的標準化機構,它受到擁有多項CDMA關鍵技術專利的高通公司的較多支持。

    3GPP和3GPP2兩者實際上存在一定競爭關系,3GPP2致力于以IS-95(在北美和韓國應用廣泛的CDMA標準,聯(lián)通CDMA與之兼容)向3G過渡,和高通公司關系更加緊密。與之對應的3GPP致力于從GSM向WCDMA(UMTS)過渡,因此兩個機構存在一定競爭。

廣播有了后就可以使用了,在activity或者fragment的onCreate方法中調用initSMSBroadcastReceiver()進行注冊,在onDestroy()中通過
//注銷短信監(jiān)聽廣播
this.unregisterReceiver(mSMSBroadcastReceiver);取消注冊

/**
   * 初始化短信監(jiān)聽廣播
   */
  private void initSMSBroadcastReceiver() {
    //生成廣播處理
    mSMSBroadcastReceiver = new SMSBroadcastReceiver(mContent);
    //實例化過濾器并設置要過濾的廣播
    IntentFilter intentFilter = new IntentFilter(SMSBroadcastReceiver.SMS_RECEIVED_ACTION);
    //優(yōu)先級最高
    intentFilter.setPriority(Integer.MAX_VALUE);
    //注冊廣播
    this.registerReceiver(mSMSBroadcastReceiver, intentFilter);
    mSMSBroadcastReceiver.setOnReceivedMessageListener(new SMSBroadcastReceiver.MessageListener() {
      @Override
      public void onReceived(String message) {
        TLog.error("message" + message);
        String code = ReadSmsContent.getDynamicPassword(message);
        seCodeEditText.setText(code);
      }
    });
  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論

顺义区| 苗栗市| 论坛| 封开县| 大余县| 恩施市| 榆树市| 五寨县| 津南区| 牟定县| 和顺县| 赤水市| 东光县| 沛县| 收藏| 从江县| 东源县| 浮山县| 武强县| 苍溪县| 寿阳县| 灵山县| 扶绥县| 武乡县| 清涧县| 渝北区| 罗田县| 衡山县| 茌平县| 乌拉特中旗| 高淳县| 霍州市| 安化县| 昆明市| 长治市| 乐陵市| 康保县| 霍山县| 固安县| 泰兴市| 赣州市|