`
shuai1234
  • 浏览: 933829 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

Android 广播获取短信内容

 
阅读更多

 

一、创建广播监听短信接收器

public  BroadcastReceiver borad = new  BroadcastReceiver(){

   @Override
   public void onReceive(Context context, Intent intent) {
    //super.onReceive(context, intent);
    if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {
     Log.v(TAG, ">>>>>>>onReceive start");
     // 第一步、获取短信的内容和发件人
     StringBuilder body = new StringBuilder();// 短信内容
     StringBuilder number = new StringBuilder();// 短信发件人
     Bundle bundle = intent.getExtras();
     if (bundle != null) {
      Object[] _pdus = (Object[]) bundle.get("pdus");
      SmsMessage[] message = new SmsMessage[_pdus.length];
      for (int i = 0; i < _pdus.length; i++) {
       message[i] = SmsMessage
         .createFromPdu((byte[]) _pdus[i]);
      }
      for (SmsMessage currentMessage : message) {
       body.append(currentMessage.getDisplayMessageBody());
       String curNumber = number.toString();
       if (!curNumber.equals(currentMessage
         .getDisplayOriginatingAddress()))
        number.append(currentMessage
          .getDisplayOriginatingAddress());
      }
      String smsBody = body.toString();
      String smsNumber = number.toString();
      if (smsNumber.startsWith("+86")) {
       smsNumber = smsNumber.substring(3);
      }
      // 第二步:确认该短信内容是否满足过滤条件
      if (smsNumber.equals("11888") || smsNumber.equals("1069030011888")) 
       Log.v(TAG, "sms_number.equals(11888)" + smsBody);
       int index = smsBody.indexOf("您本次操作的验证码为:");
       if (index != -1){
        String smsCode = smsBody.substring(index + 11,index + 17);
        //authCode.setText(smsCode);
        Message msg = new Message();
        msg.what = SMSCODE_OK;
        msg.obj = smsCode;
        handler.sendMessage(msg);
       }     
      }
     }
     Log.v(TAG, ">>>>>>>onReceive end");

    }
   }
  };

二、注册广播

/**
 * 注册接收短信广播
 */
  
 private  void regeditBroad(Context context){
  IntentFilter intentFilter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
  intentFilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
  context.registerReceiver(borad, intentFilter);
  
 }

 

三、Handler操作UI控件

private  Handler handler = new Handler(){
  
  public void handleMessage(Message msg) {
   
   switch (msg.what) {
   // 自动填充短信验证码
   case SMSCODE_OK:
    String sms = (String) msg.obj;
    System.out.println("截取到短信验证码: " + sms);
    if (sms != null && !sms.equals("")) {
     authCode.setText(sms);
     getSms.setEnabled(true);
     getSms.setText(mcontext.getString(R.string.m_hint_obtain));
    }
    //注销接收短信广播
    destoryBroad();
    break;

 

/**
 * 销毁短信广播
 */
  
 private void destoryBroad() {
  
  if (borad != null) {
   mcontext.unregisterReceiver(borad);
  }
 }

分享到:
评论

相关推荐

    Android高级应用源码-广播监听短信并获取短信内容.zip

    Android高级应用源码-广播监听短信并获取短信内容.zip

    android 获取短信的验证码

    当系统收到短信时,会发出一个action名称为android.provider.Telephony.SMS_RECEIVED的广播Intent,该Intent存放了接收到的短信内容,使用名称“pdus”即可从Intent中获取短信内容。最好使用动态注册的方法,去注册...

    android 广播机制和短信截获

    android 广播机制的实现,包括静态注册和动态注册,动态示例为获取android的短信广播,并读取短信内容,有些手机需要关闭系统独占短信和网络短信

    安卓短信彩信相关相关-广播监听短信并获取短信内容.rar

    广播监听短信并获取短信内容.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    Android开发获取短信的内容并截取短信

    2、在广播里面,我们重写的onReceive()方法,通过里面的Intent写到的Bundle就可以拿到短信的内容, 3、清单文件里面我们必须要添加权限,否则无法接收到。 4、为了防止我们的广播接收不到,我们自己写的广播接收器...

    Android上监听收到的短信(SMS)

    Android上监听收到的短信(SMS) 方式一:通过广播监听短信消息 方式二:通过短信数据库获取短信内容

    自动获取短信的验证码

    当系统收到短信时,会发出一个action名称为android.provider.Telephony.SMS_RECEIVED的广播Intent,该Intent存放了接收到的短信内容,使用名称“pdus”即可从Intent中获取短信内容。最好使用动态注册的方法,去注册...

    android实现短信的收发及发送、接收报告的提示

    android实现短信的发送:并广播接收发送状态报告及对方接收状态报告。 android实现短信的发送。

    Android如何通过手机自动获取短信验证码

    本文实例为大家分享了Android实现手机自动获取短信验证码功能,供大家参考,具体内容如下 1、短信监听广播 2、读取短信内容 3、截取短信内容【可以 reg截取】 4、填写至相应控件 PS:DevStore测试没有获取到验证码 ...

    Android 攻破360手机卫士的短信拦截开机启动等服务.rar

    里面涉及到执行Root命令、获取Android开机启动列表、启用主Activity,开启开机自动运行、禁用360进程与服务、动态创建一个优先级最高的短信广播接收者、动态创建一个关机广播接收者。以下分别说明三者的实现:  短信...

    Android利用广播接收器实现自动填充短信验证码

    今天博主带给小伙伴们一个小功能,就是利用广播接收器实现自动填充短信验证码,话不多说,我们先看看如何去实现这个小功能。 首先我们需要新建一个名为SMSBroadcastReceiver的广播接收器,代码如下: public ...

    android短信加密(发送加密短信,解密本地短信)

    4、发送短信以及为发送短信设置要监听的广播 遇到的问题: 1、发送短信字符过长会导致发送失败 解决方法:设置发送每条短信为70个字以内。 原理:每条短信限制160字符以内,每个汉字是2个字符。平时我们发送短信...

    Android Studio 3.2 读取通话记录源码

    Android Studio 3.2 读取通话记录姓名,手机号,通话时间,通话记录等源码。

    Android项目源码发送加密短信解密本地短信.zip

    4、发送短信以及为发送短信设置要监听的广播 遇到的问题: 1、发送短信字符过长会导致发送失败 解决方法:设置发送每条短信为70个字以内。 原理:每条短信限制160字符以内,每个汉字是2个字符。平时我们发送短信...

    短信语音播报源码.zip

    当接收到新短信时,该监听器会被触发,并获取短信内容。 3. **文本到语音转换**:利用Android提供的文本到语音转换API(如TextToSpeech类),将短信内容转换为语音。这通常涉及到配置语音引擎、选择语言和语速等...

    Android项目源码发送加密短信解密本地短信

    4、发送短信以及为发送短信设置要监听的广播遇到的问题: 1、发送短信字符过长会导致发送失败 解决方法:设置发送每条短信为70个字以内。 原理:每条短信限制160字符以内,每个汉字是2个字符。平时我们发送短信

    Android实现短信验证码获取自动填写功能(详细版)

    现在的应用在注册登录或者修改密码中都用到了短信验证码,那在android中是如何实现获取短信验证码并自动填写的呢? 首先,需要要在manifest中注册接收和读取短信的权限:  &lt;uses android:name=”android.permission...

    Android实现自动填充短信验证码

    利用广播接收器来拦截短信获取其中匹配的内容,提供回掉,将短信内容暴露到activity中实现自动填充 首先我们要实现一个广播接收器 package com.wquant.weilt.reciver; import java.util.regex.Matcher; import java...

    Android简单的短信验证功能的实现代码

    相信有很多朋友在做三方登陆的时候会加入短信验证的功能,最近刚好被分配安排实现这一需求,本人新手一枚,特地去网上搜了资料,目前用的比较多的大汉.云通讯还有MOB的smssdk,对比之下,最终选择了完全免费的MOB...

    Android实现短信加密功能(发送加密短信、解密本地短信)

    短信加密此类功能由于新手学习的需求量较小,所以在网上很少有一些简单的demo供新手参考。...4、发送短信以及为发送短信设置要监听的广播 遇到的问题: 1、发送短信字符过长会导致发送失败 解决方法:

Global site tag (gtag.js) - Google Analytics