本实例介绍自定义Broadcast Receiver和系统
1、自己定义Broadcast Receiver来处理广播事件
自己定义一个广播是比较简单的,首先在我们的程序组件里构建想要广播的Intent,使用sendBroadcast方法发送出去。其次定义一个广播接收器,该广播接收器继承BroadcastReceiver,并且覆盖onReceive()方法来相应事件。
最后注册该广播接收器,我们可以在代码中注册,也可以在AndroidManifest.xml配置文件中注册。
下面通过一个实例来演示Intent发出广播和Broadcast Receiver处理广播的过程:
MyReceive.java
public class MyReceive extends BroadcastReceiver{
/* (non-Javadoc)
* @see android.content.BroadcastReceiver#onReceive(android.content.Context, android.content.Intent)
*/
@Override
public void onReceive(Context context, Intent intent) {
String message = intent.getStringExtra("message");
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
}
}
在AndroidManifest配置文件中声明广播接收器组件:
<receiver android:name="MyReceive">
<intent-filter >
<action android:name = "com.newcosoft.receive.MY_ACTION"></action>
</intent-filter>
</receiver>
main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button android:id="@+id/sendButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="发送广播"/>
</LinearLayout>
MainActivity.java
public class MainActivity extends Activity {
private Button sendButton;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
sendButton = (Button) this.findViewById(R.id.sendButton);
sendButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//实例化Intent对象
Intent intent = new Intent();
//设置Intent action的属性
intent.setAction("com.newcosoft.receive.MY_ACTION");
intent.putExtra("message", "土豆土豆,我是地瓜,收到请回答,收到请回答…");
//发出广播
sendBroadcast(intent);
}
});
}
}
运行效果图:
2、系统广播事件的使用
除了上面我们自己定义的广播时间,Android系统还提供了一些自带的标准广播Action;这些广播是由系统自动发出的,我们只要直接接收即可。
系统自带标准广播action常量如下:
常量名称
|
常量值
|
意义
|
ACTION_BOOT_COMPLETED
|
android.intent.action. BOOT_COMPLETED
|
系统启动完成
|
ACTION_TIME_CHANGED
|
android.intent.action. TIME_CHANGED
|
时间改变
|
ACTION_DATE_CHANGED
|
android.intent.action. DATE_CHANGED
|
日期改变
|
ACTION_TIMEZONE_CHANGED
|
android.intent.action. TIMEZONE_CHANGED
|
时区改变
|
ACTION_BATTERY_LOW
|
android.intent.action. BATTERY_LOW
|
电量低
|
ACTION_MEDIA_EJECT
|
android.intent.action. MEDIA_EJECT
|
插入或拔出外部媒体
|
ACTION_MEDIA_BUTTON
|
android.intent.action. MEDIA_BUTTON
|
按下媒体按钮
|
ACTION_PACKAGE_ADDED
|
android.intent.action. PACKAGE_ADDED
|
添加包
|
ACTION_PACKAGE_REMOVED
|
android.intent.action. PACKAGE_REMOVED
|
删除包
|
对于具体怎么运用,直接上代码:
public class MyReceiver2 extends BroadcastReceiver{
/* (non-Javadoc)
* @see android.content.BroadcastReceiver#onReceive(android.content.Context, android.content.Intent)
*/
@Override
public void onReceive(Context context, Intent intent) {
Log.e("MyReceiver2", "SUCCESS!!!");
Toast.makeText(context, "SUCCESS!!!", Toast.LENGTH_LONG).show();
}
}
配置文件:
<receiver android:name="MyReceiver2">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
</intent-filter>
</receiver>
重新启动模拟器,在LogCat中会输出:
我们既可以在AndroidManifest中注册一个广播接收器,也可以通过代码的方式来注册。当然我们也可以注销一个广播接收器。一般我们是在Activity.onResume()方法中使用registerReceiver()方法来注册一个广播接收器,在Activity.onPause()中使用unregisterReceiver(r)来注销一个广播接收器。下面的代码片段显示了如何使用一个intentFilter注册Broadcast Receiver。
IntentFilter filter = new IntentFilter();
MyReceiver2 r = new MyReceiver2();
//注册Receiver
registerReceiver(r,filter);
- 大小: 13.9 KB
- 大小: 36.9 KB
分享到:
相关推荐
### 第八章 Android广播事件处理Broadcast Receiver #### 知识点一:理解Broadcast Receiver的作用与意义 在Android应用开发过程中,Broadcast Receiver是一种重要的组件,它主要用于接收来自系统或其他应用程序...
在Android应用开发中,BroadcastReceiver是一种非常重要的组件,它允许应用程序在不直接交互的情况下接收和响应系统或自定义广播事件。本教程将深入探讨如何利用BroadcastReceiver在两个不同的Activity之间传递数据...
Broadcast Receiver是Android系统中的一个重要组成部分,它允许应用程序在后台接收并响应系统或应用发布的广播事件,无需用户交互就能运行。在这个"Broadcast Receiver Demo"中,我们将深入探讨Broadcast Receiver的...
**定义:** Broadcast Receiver是用于接收并响应广播消息的组件,它可以监听和接收来自系统或其他应用的广播消息。 **应用场景:** - **场景示例:** 如电量不足提醒、网络状态改变等。 **注册与管理:** - **注册...
在Android开发中,广播事件处理(Broadcast Receiver)是一种核心组件,它允许应用程序对系统或其它应用触发的全局事件做出响应。广播事件处理机制不同于普通的事件处理,后者通常局限于应用程序内部的组件,如按钮...
广播接收者(Broadcast Receiver)是Android系统中的一个重要组件,它允许应用程序在后台接收并响应系统或应用程序广播事件。广播事件可以是系统级别的,如设备启动、网络状态改变,也可以是应用自定义的,用于在...
通过创建BroadcastReceiver类,定义onReceive()方法,以及正确注册和发送广播,开发者可以实现应用间的通信和对系统事件的监听。掌握BroadcastReceiver的使用对于开发功能丰富的Android应用至关重要。在实际开发中,...
4. **System Services(系统服务)**:这些服务构成了Android系统的基石,如Activity Manager控制应用程序的生命周期,Content Providers负责数据共享,Broadcast Receiver处理广播事件,以及Location Services提供...
此外,还有Broadcast Receiver处理广播事件,Service管理后台长时间运行的任务,以及Loader帮助异步加载数据。 在框架之上是Android的应用程序层,这里包含各种预装和第三方应用,如系统设置、电话应用、浏览器以及...
BroadcastReceiver可以监听系统或自定义广播事件,并在接收到广播时执行相应的逻辑。本示例主要讲解如何利用BroadcastReceiver来启动一个Service,同时启动一个Activity来显示服务启动成功的提示。 首先,理解...
Android框架服务提供了一系列系统级服务,如Activity Manager管理应用的生命周期,Content Provider用于数据共享,Broadcast Receiver处理广播事件,Service进行后台任务执行,Location Manager处理位置信息等。...
有序广播是Android系统中广播接收者处理广播意图的一种方式,其中接收者按照它们在AndroidManifest.xml文件中声明的优先级顺序逐个接收并处理广播。 首先,我们来看一下`MyReceiver.java`和`MyReceiver2.java`这两...
5. **应用程序框架**:Android的应用程序框架提供了大量的服务和API,比如Activity Manager负责应用程序生命周期管理,Content Provider用于数据共享,Broadcast Receiver处理广播事件,Intent则用于组件间通信。...
在Android开发中,广播事件(Broadcast)是一种全局的消息传递机制,允许应用程序之间或者系统与应用程序之间进行通信。在本文中,我们将深入探讨如何使用Delphi这个强大的RAD(快速应用开发)工具来处理Android系统...
在Android系统中,广播事件处理是一项至关重要的功能,它允许应用程序之间进行无耦合的数据通信。Android广播系统基于发布-订阅模式,使得任何应用都可以发送广播,而其他应用可以通过注册接收器来监听并响应这些...
总之,Broadcast在Android开发中扮演着至关重要的角色,它允许应用在不同组件间传递消息,无论是响应系统事件还是实现内部通信。理解并熟练运用Broadcast机制,对于提升Android应用的交互性和功能完整性至关重要。
通过这个“android-simple-broadcast-receiver-app”项目,开发者可以学习到如何创建和使用Broadcast Receiver,以及如何处理不同的广播事件。实践中,可以结合实际需求对示例进行扩展,比如添加更多的ACTION,或者...
### Android的Broadcast Receiver应用机制 #### 一、BroadcastReceiver简介 在Android开发中,四大核心组件包括:Activity、Service、BroadcastReceiver以及Content Provider。其中,BroadcastReceiver是一种特殊...
这份"Android应用源码之广播事件处理.zip"的资源包含了一个关于如何在Android应用中处理广播事件的重要源码示例,对开发者深入理解这一核心功能非常有帮助。 首先,我们要明白广播事件的基本概念。在Android中,当...