import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;

public class SmsReceiver extends BroadcastReceiver{

  //当接收短信时被触发
  @Override
  public void onReceive(Context context, Intent intent) {
    // 如果是接收到短信
    if(intent.getAction().equals("android.provider.Telephony。SMS_RECEIVER")){
      //取消广播(这行代码将会让系统收不到短信)
      abortBroadcast();
      StringBuilder sb = new StringBuilder();
      //接收由SMS传过来的数据
      Bundle bundle = intent.getExtras();
      //判断是否有数据
      if(bundle != null){
        //通过pdus可以获得接收到的所有短信消息
        Object[] pdus = (Object[])bundle.get("pdus");
        //构建短信对象array,并依据收到的对象长度来创建array的大小
        SmsMessage[] messages = new SmsMessage[pdus.length];
        for(int i = 0 ; i <pdus.length ; i++){
          messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
        }
        //将送来的短信合并自定义信息于StringBuilder当中
        for(SmsMessage message : messages){
          sb.append("短信来源:");
          //获得接收短信的电话号码
          sb.append(message.getDisplayOriginatingAddress());
          sb.append("\n-----短信内容-----\n");
          //获得短信的内容
          sb.append(message.getDisplayMessageBody());
        }
      }
      Toast.makeText(context, sb.toString(), 5000).show();
    }
  }

}

为了让该程序在系统的短信接收程序之前被启动,需要将该BroadcastReceiver的优先级设置得高一些,在AndroidManifest.xml文件中通过如下代码来配置该BroadcastReceiver:

<receiver android:name=".SmsReceiver">
  <intent-filter android:priority="800">
    <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
  </intent-filter>
</receiver>

使用BroadcastReceiver监听系统接收的短信的更多相关文章

  1. Android手机使用广播监听手机收到的短信

    我们使用的Android手机在收到短信的时候会发出一条系统广播.该条广播中存放着接收到的短信的详细信息.本文将详细介绍如何通过动态注册广播来监听短信. 注册广播有两种方式,一种是动态注册,另一种是静态 ...

  2. (转)[Android实例] 关于使用ContentObserver监听不到删除短信会话的解决方案

    最近做通讯录的项目,需要实时监听短信的删除,就用到了观察者ContentObserver,怪异的事情就此发生,当我删除一条短信的时候,可以监听到,但是,当我删除整条短信的时候,就无法监听到,查了很多资 ...

  3. 使用ContentObserve监听用户发出的短信

    import android.net.Uri;import android.os.Bundle;import android.os.Handler;import android.app.Activit ...

  4. Android监听系统短信数据库变化-提取短信内容

    由于监听系统短信广播受到权限的限制,所以很多手机可能使用这种方式没法监听广播,从而没办法获取到系统短信,所以又重新开辟一条路. Android监听系统短信数据库内容变化使用场景: 1.监听短信数据库的 ...

  5. 用BroadcastReceiver监听手机网络状态变化

    android--解决方案--用BroadcastReceiver监听手机网络状态变化 标签: android网络状态监听方案 2015-01-20 15:23 1294人阅读 评论(3) 收藏 举报 ...

  6. 广播小案例-监听系统网络状态 --Android开发

    本例通过广播实现简单的监听系统网络状态改变的小案例. 1.案例效果演示 当手机连网后,系统提示“已连接网络”, 当手机断网后,系统提示“当前网络不可用”. 2.案例实现 在主活动中动态注册广播,然后写 ...

  7. BroadcastReceiver监听电量变化

    用BroadcastReceiver监听电量的变化,可以实现BroadcastReceiver接收电量变化的广播,然后获取电量百分比信息. BatteryChangedReceiver.java pu ...

  8. go 监听系统信号

    linux 信号查看 kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFP ...

  9. Android 监听 Android中监听系统网络连接打开或者关闭的实现代码

    本篇文章对Android中监听系统网络连接打开或者关闭的实现用实例进行了介绍.需要的朋友参考下 很简单,所以直接看代码 复制代码 代码如下: package xxx; import android.c ...

随机推荐

  1. 让你快速搭建一个bootstrap页面

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  2. typeof instanceof

    typeof用以获取一个变量的类型,typeof一般只能返回如下几个结果:number,boolean,string,function,object,undefinedinstanceof用于判断一个 ...

  3. 关于Java控制台输入输出乱码问题

    产生原因:因为这个开源项目的默认字符编码为UTF-8,所以我的控制台的字符编码也自动变成了UTF-8,而键盘的输入流的默认格式是GBK格式,这样就造成了在GBK转UTF-8的过程中产生的奇数乱码错误( ...

  4. JSP的隐式对象

    JSP支持九个自动定义的变量,江湖人称隐含对象.这九个隐含对象的简介见下表: 参考资料:http://www.runoob.com/jsp/jsp-syntax.html

  5. [转载] Linux下查看内存使用情况方法总结

    原文: http://9iphp.com/linux/1247.html 强烈推荐 htop.

  6. jquery input选择弹框

    index.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pag ...

  7. 原创: 开题报告中摘要部分快速将一段文字插入到word的表格中

    开题报告的摘要是表格形式,之前需要一个一个字的敲入,十分不方便修改. 所以百度了一下方法.现总结如下: 达到的效果 1 将这段文字复制粘贴到word中,在word文件中的每一个字与字之间插入空格.如何 ...

  8. Linq To Sql 语法 子查询 & In & Join

    子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 =from cin ctx.Customers                    where                  ...

  9. google_apactest_round_A_problem_D

    先尝试过小数据 题目 有8张卡牌,每个卡牌都可以有不同的等级,每个卡牌的不同等级具有不同的攻击力,可以通过花钱给卡牌充值从而升级,且每次只能升一级,比如可以花1个硬币将卡牌2从1级升级到2级,同时卡牌 ...

  10. 在滚动列表中实现视频的播放(ListView & RecyclerView)

    英文原文:Implementing video playback in a scrolled list (ListView & RecyclerView) 本文将讲解如何在列表中实现视频播放. ...