首先,由于BroadReceiver是Android组件之一,所以需要先声明才能使用,声明的方法如下:

   <!-- 建立receiver聆聽系統廣播訊息 --><receiver android:name="EX06_01_SMSreceiver"> <!-- 設定要捕捉的訊息名稱為provider中Telephony.SMS_RECEIVED --><intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver> 

接着,我们看下实现本实例的截图:

1.程序开始运行时

2.当程序收到短信的时候

下面给出实现本实例的代码:

1.继承自BroadReceiver的类对象

//这个类实现的是处理操作系统的事件,它处于一直监听的状态,知道操作系统有事件发生时才会有所响应
/* 自定义继承自BroadcastReceiver类,监听系统服务广播的信息 */
public class EX06_01_SMSreceiver extends BroadcastReceiver
{ /*声明静态字符串,并使用android.provider.Telephony.SMS_RECEIVED作为Action为短信的依据*/private static final String mACTION = "android.provider.Telephony.SMS_RECEIVED"; /** 实现广播的监听反应必须要重载的函数* 这个函数有一个重要的参数Intent,它是系统或用户发送的Intent变量* @see android.content.BroadcastReceiver#onReceive(android.content.Context, android.content.Intent)*/@Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub /* 判断传来Intent是否为短信* 需要在过滤器中设置* */if (intent.getAction().equals(mACTION)) { /*建构一字符串集集合变量sb*/StringBuilder sb = new StringBuilder(); /*接收由Intent传来的数据*/Bundle bundle = intent.getExtras(); /*判断Intent是有资料*/if (bundle != null) {Set<String> keysSet=bundle.keySet();for(String keyString:keysSet){Log.d("key", keyString);}/* pdus为 android内建短信参数 identifier* 透过bundle.get("")并传一个包含pdus的对象*/Object[] myOBJpdus = (Object[]) bundle.get("pdus"); /*建构短信对象array,并依据收到的对象长度来建立array的大小*/SmsMessage[] messages = new SmsMessage[myOBJpdus.length];  for (int i = 0; i<myOBJpdus.length; i++) {  messages[i] = SmsMessage.createFromPdu ((byte[]) myOBJpdus[i]);  } /* 将送来的短信合并自定义信息于StringBuilder当中 */  for (SmsMessage currentMessage : messages) {  sb.append("接收到来告:\n");  /* 来讯者的电话号码 */ sb.append(currentMessage.getDisplayOriginatingAddress());  sb.append("\n------传来的短信------\n");  /* 取得传来讯息的BODY */  sb.append(currentMessage.getDisplayMessageBody());  }  }    /* 北Notification(Toase)显示短信信息  */Toast.makeText(context, sb.toString(), Toast.LENGTH_LONG).show(); /* 返并加Activity */ Intent i = new Intent(context, EX06_01.class); Bundle bundle2=new Bundle();bundle2.putString("SMS", sb.toString());i.putExtra("SMSS", bundle2);/*设定让加Activity以一个新的task来执行*/i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); } }
}

说明:由于BroadReceiver不是一旦单独的进程,且不是一个单独的线程,所以可以对UI界面进行更新。

2.主程序代码:

public class EX06_01 extends Activity
{ private TextView mTextView1; private TextView textView;/** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); /*透过findViewById建构巳建立TextView对象*/ textView=(TextView)findViewById(R.id.myTextView2);mTextView1 = (TextView) findViewById(R.id.myTextView1); mTextView1.setText("等待接收短信..."); Bundle bundle=getIntent().getBundleExtra("SMSS");//初始时并没有短信的内容(因为没有发送),若没有判断会造成空指针异常if(bundle!=null){String smsString=bundle.getString("SMS");textView.setText(smsString); }   }
}

3.AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="irdc.EX06_01"android:versionCode="1"android:versionName="1.0.0"><application android:icon="@drawable/icon" android:label="@string/app_name"><activity android:name=".EX06_01"android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><!-- 建立receiver聆聽系統廣播訊息 --><receiver android:name="EX06_01_SMSreceiver"> <!-- 設定要捕捉的訊息名稱為provider中Telephony.SMS_RECEIVED --><intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver>
</application>
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
</manifest> 

Android--常驻BroadReceiver实现短信提醒相关推荐

  1. 华为设置android系统提醒功能,华为手机短信不提醒怎么办?华为手机短信提醒设置方法...

    华为手机短信提醒设置方法 1)检查当前设置的默认短信应用是哪个应用. ①点击桌面"设置"图标②找到"应用程序管理" ③选择"默认应用设置"④ ...

  2. 使用ContentObserver实现短信提醒功能

    通过查询语句:Cursor cursor = mContext.getContentResolver().query(Uri.parse("content://sms"), nul ...

  3. android通话记录列表apk,android打电话,发短信,获取通讯录、通话记录、短信记录...

    [实例简介] 代码实现android打电话,发短信,获取通讯录.通话记录.短信记录 [实例截图] [核心代码] 19287b5f-b70c-4210-ab04-9d24ddd60788 └── cal ...

  4. linux 程序返回值 139,Linux系统监控之ssh登陆自动139邮件短信提醒

    linux系统监控之ssh登陆自动139邮件短信提醒 Linux系统监控非常重要,互联网的网络的安全是一个非常重要的问题,很多时候,我们会出于安全考虑,希望服务器在有用户通过ssh登陆时能自动向管理员 ...

  5. android 发送短信 广播 demo,向Android模拟器打电话发短信的简单方法

    在开发android应用程序时,有时候需要测试一下向android手机拨打电话发送短信时该应用程序的反应.譬如编写一个广播接收器,来提示用户有短信收到或者处理短信,就需要向该手机发送短信来进行测试.这 ...

  6. android 拨打电话 发送短信 权限,Android开发实现拨打电话与发送信息的方法分析...

    本文实例讲述了Android开发实现拨打电话与发送信息的方法.分享给大家供大家参考,具体如下: xml布局: android:layout_width="fill_parent" ...

  7. android 脚本发短信,Android使用SmsManager实现短信发送功能

    安卓使用SmsManager实现发送短信,供大家参考,具体内容如下 关键代码实现 package com.example.sms; import java.util.ArrayList; import ...

  8. Android 接收和收发短信

    收发短信应该是每个手机最基本的功能之一了,即使是许多年前的老手机也都会具备这项功能,而Android作为出色的智能手机操作系统,自然也少不了在这方面的支持.每个Android手机都会内置一个短信应用程 ...

  9. Android接收和发送短信

    每一部手机都具有短信接收和发送功能,下面我们通过代码来实现接收和发送短信功能. 一.接收短信 1.创建内部广播接收器类,接收系统发出的短信广播 2.从获得的内容中解析出短信发送者和短信内容 3.在Ac ...

最新文章

  1. 【组队学习】【33期】动手学数据分析
  2. Myeclipse 10 利用工具生成网络服务接口并调用
  3. The Beam Model:Stream Tables翻译(上)
  4. android如何设置多条广播,Android使用MulticastSocket实现多点广播图片
  5. .NET Core 3.0-preview3 发布
  6. 3 Python os 文件和目录
  7. 服务器选购seo优化规则,网站seo优化注意事项1—域名和服务器选择
  8. cnn stride and padding_彻底搞懂CNN中的卷积和反卷积
  9. css 布局 两行, 三行等高
  10. 深度学习(八)caffe源码学习-未完待续
  11. MQTT协议(1)-简介
  12. MongoDB学习(黑马教程)-1-数据库概述及环境搭建
  13. Web前端-课程设计-网易严选
  14. 鼠标经过时改变DIV背景颜色的三种途径
  15. Word 分节符插入与删除方法
  16. C语言作业3-数组-2英文句子逆向输出
  17. 表空间脚本[置顶] Oracle 数据库表空间容量调整(表空间缩容脚本)脚本
  18. 深入理解android 包体积优化,给apk瘦身全部技巧
  19. 【JS笔记】JS中的DOM对象以及通过JS获取DOM结点,操作DOM属性、DOM增删改查
  20. Code128 编码规则

热门文章

  1. 清理XCode无用的文件(转)
  2. Oracle学习之DATAGUARD(七) 使用Broker管理DG
  3. 时代中坚:互联网电视迎来极致时代
  4. SharePoint中的列表(List) 与Content Type 之五
  5. 构建高可用LVS + keepalived+httpd和双主模型的keepalived方案
  6. KVM日常管理-克隆-快照-磁盘扩容-虚拟磁盘挂载
  7. 美国康普SYSTIMAX iPatch智能配线系统介绍
  8. 《Asp.Net 2.0 揭秘》读书笔记(八)
  9. javascript:函数的apply,call方法和length属性
  10. SOA也是一种设计模式