Android开发之广播机制
- 格式:doc
- 大小:11.69 KB
- 文档页数:7
Android中的⼴播(BroadCast)详细介绍什么是⼴播在Android中,Broadcast是⼀种⼴泛运⽤的在应⽤程序之间传输信息的机制。
我们拿⼴播电台来做个⽐⽅。
我们平常使⽤收⾳机收⾳是这样的:许许多多不同的⼴播电台通过特定的频率来发送他们的内容,⽽我们⽤户只需要将频率调成和⼴播电台的⼀样就可以收听他们的内容了。
Android中的⼴播机制就和这个差不多的道理。
电台发送的内容是语⾳,⽽在Android中我们要发送的⼴播内容是⼀个Intent。
这个Intent中可以携带我们要传送的数据。
电台通过⼤功率的发射器发送内容,⽽在Android中则是通过sendBroadcast这个⽅法来发送(很形象的名字吧)。
⽤户通过调整到具体的电台频率接受电台的内容。
⽽在Android中要接受⼴播中的内容则是通过注册⼀个BroadCastReceiver 来接收的。
只有发送⼴播的action和接收⼴播的action相同,接受者才能接受这个⼴播。
⼴播有什么⽤其实,在什么是⼴播的第⼀句就已经说明了⼴播有什么⽤了。
对了,笼统⼀点讲就是⽤来传输数据的。
具体⼀点说就是:1.实现了不同的程序之间的数据传输与共享,因为只要是和发送⼴播的action相同的接受者都能接受这个⼴播。
典型的应⽤就是android⾃带的短信,电话等等⼴播,只要我们实现了他们的action的⼴播,那么我们就能接收他们的数据了,以便做出⼀些处理。
⽐如说拦截系统短信,拦截骚扰电话等等 2.起到了⼀个通知的作⽤,⽐如在service中要通知主程序,更新主程序的UI等。
因为service是没有界⾯的,所以不能直接获得主程序中的控件,这样我们就只能在主程序中实现⼀个⼴播接受者专门⽤来接受service发过来的数据和通知了。
实现⼴播现在我们就来实现⼀个简单的⼴播程序。
Android提供了两种注册⼴播接受者的形式,分别是在程序中动态注册和在xml中指定。
他们之间的区别就是作⽤的范围不同,程序动态注册的接收者只在程序运⾏过程中有效,⽽在xml注册的接收者不管你的程序有没有启动有会起作⽤。
如何在Android中正确使用广播接收器广播接收器是Android中重要的组件之一,可以用于接收和处理广播消息。
它可以用于跨应用程序的信息传递,以及系统事件的监听和处理。
正确使用广播接收器是Android开发中的关键所在,以下将介绍如何在Android中正确使用广播接收器。
一、了解广播接收器的基本概念和原理在Android中,广播接收器用于接收和处理广播消息,广播消息可以是系统内部发出的,也可以是应用程序内部发出的。
广播接收器是一种全局的机制,可以在应用程序中的任何地方注册,用于监听系统事件以及自定义事件。
二、注册广播接收器在Android中,注册广播接收器有两种方式:静态注册和动态注册。
静态注册在AndroidManifest.xml文件中进行,系统会在应用程序启动时自动注册广播接收器;动态注册通过代码的方式在运行时注册,可以更加灵活地控制广播接收器的生命周期。
在Activity或Fragment中动态注册广播接收器的示例代码如下:```public class MyActivity extends AppCompatActivity {private BroadcastReceiver mReceiver;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);mReceiver = new MyBroadcastReceiver();IntentFilter filter = new IntentFilter();filter.addAction("com.example.MY_ACTION");registerReceiver(mReceiver, filter);}@Overrideprotected void onDestroy() {super.onDestroy();unregisterReceiver(mReceiver);}// 自定义广播接收器public class MyBroadcastReceiver extends BroadcastReceiver { @Overridepublic void onReceive(Context context, Intent intent) {// 处理接收到的广播消息}}```三、处理广播消息广播接收器接收到广播消息后,需要进行相应的处理。
android broadcast原理
AndroidBroadcast原理是指Android系统中用于应用程序之间通信的一种机制。
它可以让一个应用程序向所有其他应用程序广播一个消息,其他应用程序可以注册一个BroadcastReceiver(广播接收器)来接收该消息。
因此,Broadcast机制是一种非常重要的跨应用程序通信方式。
在Android系统中,一个Broadcast消息由一个Intent对象表示,它包含了要广播的消息以及相关的信息。
当一个应用程序发送一个Broadcast时,Android系统会将该消息发送给所有已注册相应IntentFilter的BroadcastReceiver。
BroadcastReceiver可以通过Intent对象中的信息来判断是否需要处理该消息,并进行相应的处理。
Android系统中有两种广播方式:普通广播和有序广播。
普通广播是一种异步广播方式,即发送者不会等待接收者的响应,而是直接发送广播。
这种广播方式的优点是速度快,但是也存在一些缺点,如接收者无法阻止其他应用程序的广播或在广播处理过程中进行拦截
和修改。
有序广播是一种同步广播方式,即发送者等待接收者的响应,每个接收者在处理完广播后,可以选择继续将广播传递给下一个接收者或者终止广播。
这种广播方式的优点是安全性高,但是也存在一些缺点,如速度比较慢。
Broadcast机制在Android系统中被广泛应用,例如在系统事件、应用程序之间的通信、插件等方面。
掌握Broadcast原理对于Android
开发人员来说是非常重要的。
《Android应用开发》课程标准一、课程的性质与目标《Android应用开发》是面向计算机相关专业的一门专业课,涉及Android 基础知识、常见界面布局与控件、数据存储、四大组件、事件处理、网络编程、图形图像处理、多媒体应用等。
通过本课程的学习,学生能够掌握Android基础知识,学会编写简单的应用程序与教材中第6、12、15章的阶段案例。
二、教学条件要求操作系统:Windows 7开发工具:Android Studio 3.2+模拟器、JDK8三、课程的主要内容及基本要求第1章Android基础入门第2章Android常见界面布局第3章Android常见界面控件第4章程序活动单元Activity第5章数据存储第6章阶段案例——记事本第7章使用内容提供者共享数据第8章广播机制第9章服务第10章Android事件处理第11章网络编程第12章阶段案例——智能聊天机器人第13章图形图像处理14章多媒体应用开发第第15章综合项目——网上订餐四、学时分配五、考核模式与成绩评定办法本课程建议教学中主要提取一些具代表性的生产性问题,采用项目教学、案例教学为主,教师在每个案例教学中先提纲挈领的阐明一些新技术手段和语法表达形式,之后学生分组,以 3 - 5 人为宜,每组注意实践操作能力强弱的搭配,完成后抽取具代表性的作品公开集中评价,所有学生共同参与,同步提高。
结合案例教学的特点,对学生的考核采用平时情况结合期末总评情况综合评价。
学生在每次项目完成后,每组学生在项目组内自评,教师给每组一个总评,将学生自评成绩和教师总评成绩按比例结合为一次项目的成绩。
多次项目成绩组成了学生此课程的平时实践操作部分的成绩。
另外学生在每部分学习后完成的其它任务(如课后作业),此又作为学生平时成绩的一部分。
在期末课程结束后,按实际情况可布置每个学生独立完成一个较综合的项目实践,以此作为期末考核成绩;考虑到部分学生非独立完成的作弊行为,亦可组织学生统一卷面考试,以此成绩作为期末考核成绩。
android广播的用法
Android广播是一种用于在应用程序中发送和接收消息的机制。
广播是一种机制,应用程序可以发送广播消息,而其他应用程序可以注册并接收这些广播消息,并根据需要采取相应的操作。
Android广播有两个主要组成部分:广播发送者和广播接收者。
广播发送者:
1. 创建Intent对象,设置广播的标识(Action)和需要传递的
数据(Extras)。
2. 调用广播发送函数sendBroadcast()、sendOrderedBroadcast()
或sendStickyBroadcast()来发送广播。
广播接收者:
1. 创建一个继承自BroadcastReceiver的广播接收器类。
2. 在AndroidManifest.xml文件中注册广播接收器,设置接收
的广播标识(Action)。
3. 重写广播接收器的onReceive()方法,根据接收到的广播进
行相应的处理。
常见的广播使用场景有:
1. 系统广播:例如设备启动、网络状态变化、电量变化等系统事件的广播。
2. 自定义广播:应用程序内部发送自定义的广播,用于不同组件间的通信。
3. 动态注册广播接收器:在代码中动态注册广播接收器,用于灵活地监听特定的广播事件。
4. 静态注册广播接收器:在AndroidManifest.xml文件中静态注册广播接收器,用于在应用程序安装后自动接收广播。
总之,Android广播是一种强大的通信机制,可以用于应用程序内部的组件间通信,以及与系统和其他应用程序的交互。
android广播机制实现原理Android广播机制是一种用于组件之间通信的重要机制。
它允许一个组件发送广播消息,而其他组件可以接收这些消息并做出相应的处理。
本文将介绍Android广播机制的实现原理。
我们需要了解广播的基本概念。
广播可以理解为一种事件,它可以被发送到整个系统或特定的组件。
发送广播的组件称为广播发送器,接收广播的组件称为广播接收器。
Android系统内置了一些标准的广播,比如网络变化、电池电量变化等,这些广播可以被系统或应用程序发送,并由其他组件接收。
此外,开发者还可以自定义广播,以满足特定需求。
Android广播机制的实现主要依靠了两个核心组件:广播发送器和广播接收器。
1. 广播发送器:广播发送器是负责发送广播消息的组件。
它通过调用系统提供的广播发送方法来发送广播。
发送广播时,需要指定广播的动作(Action),用于识别广播的类型。
可以通过Intent对象设置广播的动作和其他参数。
一旦广播发送器发送了广播,系统会将广播消息传递给所有注册了相应动作的广播接收器。
2. 广播接收器:广播接收器是负责接收广播消息并做出相应处理的组件。
广播接收器需要在代码中注册,以便系统能够识别并将广播消息传递给它。
注册广播接收器可以通过两种方式:静态注册和动态注册。
- 静态注册:在AndroidManifest.xml文件中声明广播接收器,并指定接收的广播动作。
静态注册的广播接收器会在应用程序安装时被系统注册,无需手动启动即可接收广播。
缺点是无法在运行时动态注册和取消注册。
- 动态注册:通过代码动态注册广播接收器,可以在运行时灵活地注册和取消注册。
动态注册需要在合适的时机手动注册和取消注册,以避免内存泄漏。
动态注册的广播接收器只有在注册后才能接收广播。
广播的传递是通过Android系统的消息机制来完成的。
当广播发送器发送广播时,系统会将广播消息封装成一个Intent对象,并将其加入消息队列中。
然后,系统会按照先进先出的顺序,逐个将消息分发给已注册的广播接收器。
小引:广播,四大组件之一。
BroadcastReciver:跟我们生活中的广播类似,频道,发送者,接收者,一:概念:1..BroadCastReciver:是Android中四大组件之一,2..没有可以显示的界面,3:.BroadcastReciver包括两个概念,分别是广播发送者,和广播接收者4:程序可以自己发送广播自己接收,也可以接收系统或者其他应用程序的广播二:声明周期:1,..onReceive:该函数执行之后广播的声明周期就结束了2…onRecivie默认在主线程中执行所以不能在该方法中做比较耗时的操作,三:广播的类型:无序广播,有序广播1:无序广播:接受者之间没有任何关系,发送者直接发送给若干接收者2:使用sendBrodcast发送,无序并且不可中断的,彼此之间不被第三方因素中断参数:Intent,该intent的作用就是从哪里发送到哪里,实例化一个intent对象参数是;上下文参数,和发送广播到哪里。
另外如果在清单文件中定义了一个action动作,那么就创建另外一个intent这里面的参数就是String,就是清单文件中action的动作。
工作原理就是发送完广播之后到清单文件中找action动作与intent参数相同的那个类,如果相同那么就能够接受到广播。
另外Intent除了这种方式添加action动作之外,还可以用无参构造方法实例化intent并用该对象调用setAction()方法,将action动作的字符串放进去就可以。
3:广播时可以设置接收者权限仅当有权限的时候才有权限也就是频道对了才会有权限4:有序广播:一个传一个,发送者给接送者A,接送者A在给接送者B……..优先级,先接收到的优先级高,也就是说优先级越高接收的越贴近发送者,优先级高的可以中断优先级低的。
5:使用sendorderBrodcast发送,参数第二个为权限可以暂时不用,在该方法中参数也是Intent,另外一个是权限暂且可以不用,7:优先级设置,在清单文件中<intent-filter>中定义的android:priority(优先级的意思)属性设置,数字越大优先级越高,,其中有序广播在意图控制器里面设置优先级关键词是priority,优先级的范围是1到1000 8:被各个接受者逐步接收,优先级高的可以停止广播也可以添加数据给先一个接受者。
android线程间通信的几种方法
在Android开发中,线程间通信是一项重要的技术,通常用于在不同的线程间传递数据或通知。
下面介绍几种实现线程间通信的方法: 1. Handler
Handler是Android中最常用的线程间通信机制之一,它允许在不同线程间发送和处理消息。
在UI线程中创建一个Handler对象,
然后可以使用它来向其他线程发送消息或将消息传递回UI线程进行
处理。
2. BroadcastReceiver
BroadcastReceiver是一种广播机制,可以在应用程序内部和应用程序之间传递消息。
通过注册和发送广播,不同的线程可以相互通信,从而达到线程间通信的目的。
3. Messenger
Messenger是一种轻量级的IPC(进程间通信)机制,它允许不
同的线程使用Message对象进行通信。
Messenger通过IPC方式传递消息,可以实现跨进程的线程间通信。
4. ContentProvider
ContentProvider是一种用于访问和共享数据的机制,它可以将不同线程之间的数据进行共享。
通过ContentProvider,线程可以在不同的进程中读取和写入数据,从而达到线程间通信的目的。
总之,在Android开发中,线程间通信是非常重要的,我们需要根据具体的需求选择不同的方法来实现线程间的数据传递和通信。
以
上介绍的几种方法都是非常常用的线程间通信机制,开发者需要根据具体的情况选择最适合的方法来完成线程间的通信。
Android⼴播接实现监听电话状态(电话的状态,拦截)⾸先我们来理解下监听器的机制。
Android的事件处理机制有两种:监听和回调。
A基于监听的事件处理主要涉及三类对象:EventSource(事件源),Event(事件),EventListener(事件监听器)监听机制处理事件的流程图如下(委派式:Delegation):1:需要在AndroidManifest.xml清单中添加权限<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/><uses-permission android:name="android.permission.READ_PHONE_STATE" />2:注册⼴播要注意事件的级别(android中的级别-1000~1000)<receiver android:name=".PhoneBroadcastReceiver"><intent-filter android:priority="1000"><action android:name="android.intent.action.NEW_OUTGOING_CALL"/><action android:name="android.intent.action.PHONE_STATE"/></intent-filter></receiver>详细配置请看 AndroidManifest.xml<manifest xmlns:android="/apk/res/android"package="com.zyw.broadcastsendsms"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="15" /><applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name=".SendSMS"android:label="@string/title_activity_send_sms" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="UNCHER" /></intent-filter></activity><receiver android:name=".PhoneBroadcastReceiver"><intent-filter android:priority="1000"><action android:name="android.intent.action.NEW_OUTGOING_CALL"/><action android:name="android.intent.action.PHONE_STATE"/></intent-filter></receiver></application><uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/><uses-permission android:name="android.permission.READ_PHONE_STATE" /></manifest>3:编写⼴播的实现类这⾥需要继承BroadcastReceiver 实现onReceive()⽅法程序的源代码如下:package com.zyw.broadcastsendsms;import android.app.Service;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.telephony.TelephonyManager;import android.util.Log;public class PhoneBroadcastReceiver extends BroadcastReceiver {private static final String TAG = "message";private static boolean mIncomingFlag = false;private static String mIncomingNumber = null;@Overridepublic void onReceive(Context context, Intent intent) {// 如果是拨打电话if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {mIncomingFlag = false;String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);Log.i(TAG, "call OUT:" + phoneNumber);} else {// 如果是来电TelephonyManager tManager = (TelephonyManager) context.getSystemService(Service.TELEPHONY_SERVICE);switch (tManager.getCallState()) {case TelephonyManager.CALL_STATE_RINGING:mIncomingNumber = intent.getStringExtra("incoming_number");Log.i(TAG, "RINGING :" + mIncomingNumber);break;case TelephonyManager.CALL_STATE_OFFHOOK:if (mIncomingFlag) {Log.i(TAG, "incoming ACCEPT :" + mIncomingNumber);}break;case TelephonyManager.CALL_STATE_IDLE:if (mIncomingFlag) {Log.i(TAG, "incoming IDLE");}break;}}}/*@Overridepublic void onReceive(Context context, Intent intent) {String number = getResultData();if("5556".equals(number)){setResultData(null);//挂断}else{number = "12593"+ number; //其他,则加区号setResultData(number);}}*/}以上内容给⼤家介绍了Android⼴播接实现监听电话状态(电话的状态,拦截)的相关知识,希望对⼤家有所帮助!。
android广播机制原理
Android广播机制是Android中一种用于组件之间进行通信的
机制。
其原理如下:
1. 广播发送:当一个组件(发送者)想要发送广播时,它会创建一个Intent对象,指定广播的Action和一些附加的数据。
然后,组件调用Context的sendBroadcast()方法将广播发送出去。
2. 广播接收:其他的组件(接收者)可以通过注册一个BroadcastReceiver来接收指定Action的广播。
当广播发送后,系统会将广播传递给所有注册了该Action的接收者。
3. 广播过滤:在广播发送时,可以指定IntentFilter来限制只有符合某些条件的接收者才能接收到广播,例如指定广播的权限、指定广播的数据类型等。
4. 广播处理:当接收者收到广播后,系统会自动调用其onReceive()方法,并将广播传递给该方法。
在onReceive()方
法中可以对广播进行处理,例如获取广播中的数据、更新UI 等。
5. 广播顺序:如果有多个接收者注册了同一个Action的广播,系统会按照其注册的顺序依次调用它们的onReceive()方法。
接收者可以通过setPriority()方法来指定自己的优先级,优先
级高的接收者会先收到广播。
通过广播机制,Android中的不同组件(Activity、Service、
BroadcastReceiver等)可以实现松耦合的通信,提高了系统的扩展性和灵活性。
同时,广播也可以用于系统事件的通知,例如屏幕开关、网络状态的改变等。
Android开发之广播机制/** Android开发之广播机制* 北京Android俱乐部群:167839253*Created on: 2012-7-31*Author: blueeagle* Email:liujiaxiang@*/概述在Android中,有一些操作完成以后,会发送广播,比如说发出一条短信,或打出一个电话,如果某个程序接收了这个广播,就会做相应的处理。
这个广播跟我们传统意义中的电台广播有些相似之处。
之所以叫做广播,就是因为它只负责“说”而不管你“听不听”,也就是不管你接收方如何处理。
另外,广播可以被不只一个应用程序所接收,当然也可能不被任何应用程序所接收。
什么是Broadcast ReceiverBroadcastReceiver是Android应用程序中的第三个组件。
Broadcast Reciver和事件处理机制类似,不同的是事件处理机制是应用程序组件级别的,比如一个按钮的OnClickListener事件,只能够在一个应用程序中处理。
而广播事件处理机制是系统级别的,不同的应用程序都可以处理广播事件。
如何使用Broadcast Receiver可以通过构建Intent对象,然后调用sendBroadcast()方法将广播发出。
事件的接受是通过一个继承自BroadcastReceiver的类来实现的。
继承后重写onReceiver()方法,在该方法中响应事件。
当然不能忘记在AndroidManifest.xml文件中注册BroadcastReceiver。
一般继承自BroadcastReceiver的类,是我们根据自己的需求所自定义的。
这个自定义的类的作用,就是用来处理android当中所发出的广播事件。
也就是说,Android操作系统中发出的广播,由BroadcastReceiver这个类来接收。
接收到以后,就会调用这个类中的onReceive()方法来进行处理。
那么,在Android系统中,有很多的广播,如何才能确定,一个receiver负责接收什么类型的广播呢?对了。
这就是要去书写AndroidManifest.xml文件。
我们需要在AndroidManifest.xml里进行注册,将receiver注册到应用程序中。
这个receiver应该接收什么类型的事件是由Intent-filter来决定的。
对于onReceive方法,一旦方法返回。
系统就会认为对象已经被完成。
从而不再是活动状态。
按照上述说明。
简单的看一个例子,代码如下:public class BroadcastReceiverTest extends Activity {private Button myButton;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.main);myButton = (Button)findViewById(R.id.myButton);myButton.setOnClickListener(newButton.OnClickListener(){@Overridepublic void onClick(View v) {Intent myIntent = new Intent();myIntent.setAction(myIntent.ACTION_EDIT);BroadcastReceiverTest.this.sendBroadcast(myIntent);//发送广播}});}}需要编写BroadcastReceiver类,代码如下:public class ReceiverTest extends BroadcastReceiver {public ReceiverTest(){System.out.println("ReceiverTest");}@Overridepublic void onReceive(Context arg0, Intent arg1) {System.out.println("onReceive");}}在AndroidManifest.xml中注册的代码如下:<receiverandroid:label="@string/app_name"android:name=".ReceiverTest" ><intent-filter ><action android:name="android.intent.action.EDIT" /></intent-filter></receiver>编译完成之后,我们在控制台会得到如图所示的结果:如果连续按两次按钮,则会出现两次。
如图所示:在上面的例子中,Intent的Action类型为ACTION_EDIT,而在AndroidManifest.xml中注册的receiver类型也是edit,<actionandroid:name="android.intent.action.EDIT"/>,这就表明这两个Action进行了匹配。
即执行了sendBroadcast方法之后,类型为edit的receiver就可以进行接收了。
类型匹配成功的话,才会生成receiver的对象,从而调用onReceiver方法。
上文中已经谈到,每次接收广播都会生成一个新的receiver对象。
在处理完毕之后,这个对象就不会再被使用了。
注册Broadcast Receiver的方法BroadcastReceiver能够监听被广播出来的对象,一般是会用Intent来进行广播。
那么,达到能够监听的目的,则BroadcastReceiver必须进行注册。
注册方法有两种:在AndroidManifest.xml文件中进行注册:这里面需要注意一点的是,如果我在AndroidManifest.xml文件中进行注册BroadcastReceiver的话,无论这个BroadcastReceiver所在的应用程序是运行状态还是关闭状态,这个BroadcastReceiver都是活动的,都可以接收到广播的事件。
例如,短信息的接收,电池耗电量的显示等应用程序。
我们在待机状态时需要监听这些状态,但是我们不可能一直打开应用程序。
在应用程序的代码中进行注册:当我们需要更新Activity里面的控件的状态的时候,则需要在应用程序的代码中进行注册,这个时候我们如果在AndroidManifest.xml中注册的话就不太合适了。
因为只有我们在Activity能看到的时候才进行更新,而Activity看不见的时候,这个BroadcastReceiver 就应该关闭。
否则会浪费各种资源。
因此,这个时候就需要在应用程序的代码中进行注册。
在Activity启动以后注册BroadcastReceiver,在Activity不可见后取消注册。
注册的代码很简单就是registerReceiver(receiver,filter);相应的,取消注册的代码为unregisterReciver(receiver);参数receiver表示一个BroadcastReceiver对象( TheBroadcastReceiver to handle the broadcast.);filter表示一个Intent-filter对象( Selectsthe Intent broadcasts to be received.),与我们在AndroidManifest.xml 文件中所使用的Intent-filter标签的作用是一样的。
后面会讨论到如何创建一个Intent-filter对象。
下面用手机接收信息这个例子来说明。
对应代码如下:public class BroadcastReceiverTest extends Activity {private Button myRegisterbtn;private Button myUnregisterbtn;private SMSReceiver myMessageReceiver;private static final String SMS_ACTION = "android.provider.Telephony.SMS_RECEIVED";private static final String EDIT_ACTION = "android.intent.action.EDIT";@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.main);myRegisterbtn = (Button)findViewById(R.id.registerbtn);myUnregisterbtn = (Button)findViewById(R.id.unregisterbtn);myRegisterbtn.setOnClickListener(newmyRegisterListener());myUnregisterbtn.setOnClickListener(newmyUnregisterListener());}class myRegisterListener implements OnClickListener{@Overridepublic void onClick(View v) {myMessageReceiver = new SMSReceiver();//生成一个BroadReceiver对象IntentFilter myFilter = new IntentFilter();//生成一个IntentFilter对象myFilter.addAction(SMS_ACTION);//为IntentFilter添加一个ActionBroadcastReceiverTest.this.registerReceiver(myMessageReceiver, myFilter);}//整个操作完成了BroadcastReceiver的注册。