Android采取BroadcastReceiver方式自动获取验证码

Android采取BroadcastReceiver方式自动获取验证码,第1张

概述Android自动获取验证码的两种方式分别是BroadcastReceiver及ContentObserver,两种方式都需要进行注册、取消注册两个步骤

AndroID 自动获取验证码的两种方式分别是broadcastReceiver及ContentObserver,两种方式都需要进行注册、取消注册两个步骤 @H_419_1@记得添加权限,本文先介绍其中一种。

<uses-permission androID:name="androID.permission.RECEIVE_SMS"/>@H_419_1@<uses-permission androID:name="androID.permission.WRITE_EXTERNAL_STORAGE"/>@H_419_1@<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;/** * 短信监听 * * @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);          //发送号码-可以过滤需要读取的短信的发送号码          String sender = smsMessage.getdisplayOriginatingAddress();          //短信内容          String content = smsMessage.getdisplayMessageBody();          if (content.contains("你从服务器上获取到的验证码")){            mMessageListener.onReceived(content);            abortbroadcast();//中断广播的继续传递,防止优先级低的获取到          }        }      }    }  }  //回调接口  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。 @H_419_1@    3GPP的目标是在ITU的IMT-2000计划范围内制订和实现全球性的(第三代)行动电话系统规范。它致力于GSM到umts(WCDMA)的演化,虽然GSM到WCDMA空中接口差别很大,但是其核心网采用了GPRS的框架,因此仍然保持延续性。

3GPP2

   3GPP2是针对CDMA手机,扩展名为.3g2。第三代合作伙伴计划2(3rdGenerationPartnershipProject2,即3GPP2)建立于1998年12月,成员包括:TIA(北美)、CCSA(中国)、ARIB/TTC(日本)和TTA(韩国)。 @H_419_1@    3GPP2致力于使ITU的IMT-2000计划中的(3G)行动电话系统规范在全球的发展,实际上它是从2G的CDMAOne或者IS-95发展而来的CDMA2000标准体系的标准化机构,它受到拥有多项CDMA关键技术专利的高通公司的较多支持。

    3GPP和3GPP2两者实际上存在一定竞争关系,3GPP2致力于以IS-95(在北美和韩国应用广泛的CDMA标准,联通CDMA与之兼容)向3G过渡,和高通公司关系更加紧密。与之对应的3GPP致力于从GSM向WCDMA(umts)过渡,因此两个机构存在一定竞争。@H_419_1@

广播有了后就可以使用了,在activity或者fragment的onCreate方法中调用initSMSbroadcastReceiver()进行注册,在onDestroy()中通过 @H_419_1@//注销短信监听广播 @[email protected](mSMSbroadcastReceiver);取消注册

/**   * 初始化短信监听广播   */  private voID initSMSbroadcastReceiver() {    //生成广播处理    mSMSbroadcastReceiver = new SMSbroadcastReceiver(mContent);    //实例化过滤器并设置要过滤的广播    IntentFilter intentFilter = new IntentFilter(SMSbroadcastReceiver.SMS_RECEIVED_ACTION);    //优先级最高    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);      }    });  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。@H_419_1@

总结

以上是内存溢出为你收集整理的Android采取BroadcastReceiver方式自动获取验证码全部内容,希望文章能够帮你解决Android采取BroadcastReceiver方式自动获取验证码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1142129.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存