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. mysql 内连接 左连接 右连接 外连接

    mysql> desc student;+-------+-------------+------+-----+---------+-------+| Field | Type | Null | ...

  2. iOS项目中的version和build

    Version在plist文件中的key是“CFBundleShortVersionString”,标识应用程序的发布版本号,和AppStore上的版本号保持一致.该版本的版本号是三个分隔的整数组成的 ...

  3. z-index总结【转载http://www.cnblogs.com/mind/archive/2012/04/01/2198995.html】

    元素位置重叠的背景常识 (x)html文档中的元素默认处于普通流(normal flow)中,也就是说其顺序由元素在文档中的先后位置决定,此时一般不会产生重叠(但指定负边距可能产生重叠).当我们用cs ...

  4. Java 中使用 UEditor 整理【待续。。。】

    1.简介 官网:http://ueditor.baidu.com/website/index.html 演示:http://ueditor.baidu.com/website/examples/ 2. ...

  5. CentOS查看内核版本,位数,版本号 (zhuan)

    http://blog.csdn.net/painsonline/article/details/7668824 ******************************************* ...

  6. MVC HtmlHelper用法大全

    MVC HtmlHelper用法大全HtmlHelper用来在视图中呈现 HTML 控件.以下列表显示了当前可用的一些 HTML 帮助器. 本主题演示所列出的带有星号 (*) 的帮助器. ·Actio ...

  7. 配置Java EE Eclipse+Tomcat开发环境

    以下将详细介绍在Eclipse下搭建Java EE开发环境的每一步, 环境:Win 7 + JDK 1.7 + Eclipse IDE for Java EE Developers 3.7 +Tomc ...

  8. windows截屏

    #ifndef _CAPTURESCREEN_H #define _CAPTURESCREEN_H #include <windows.h> class CaptureScreen { p ...

  9. DI 之 3.3 更多DI的知识(陆)

    3.3.1  延迟初始化Bean 延迟初始化也叫做惰性初始化,指不提前初始化Bean,而是只有在真正使用时才创建及初始化Bean. 配置方式很简单只需在<bean>标签上指定 " ...

  10. Android Drawable资源

    Android实现应用d动画效果:比如App第一次打开的开始动画等 有两种:GIF动画和代码实现. 第一种:借助于Gif制作工具软件实现.一般是和第三方开源的GifView(https://githu ...