本实例介绍自定义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
分享到:
相关推荐
利用广播Broadcast Receiver,在2个不同的Activity传递数据
第八章_Android广播事件处理Broadcast_Receiver 让你更快了解
广播接受者(Broadcast Receiver)的简介与使用
Android新手Broadcast Receiver简单实现 发送广播并实现接收广播
Android系统中的广播Broadcast,Receiver例子,可以用LogCat察看整个运行的生命周期.MainActivity界面上有两个按钮,分别是Start Counter和Stop Counter按钮,点击前者开始计数,而点击后者则停止计数。
Android有序广播(Ordered Broadcast)的实现:接受者按声明的优先级依次接收广播
本地广播发送Broadcast Receiver广播的三种发送方式常用的系统广播的action 和permission使用注意事项拓展学习1. Service组件和BroadcastReceiver实现组件通信2. 自定义私有权限 概述 Android应用程序是
Android源代码 ...工程2:Broadcast的Receiver,负责监听广播(2种注册方式:XML和代码动态注册),一旦监听到广播,弹出Activity,并显示广播携带的数据。 本代码含金量很高哦,简单而直观解决了程序间的通信!
该文档是简单的介绍了其android中的广播机制的用法,比较通俗易懂。
下面就具体介绍一下Broadcast Receiver组件的用法。 下面是Android Doc中关于BroadcastReceiver的概述: ①广播接收器是一个专注于接收广播通知信息,并做出对应处理的组件。很多广播是源自于系统代码的──比如,...
Braodcast Receiver顾名思义就是广播接收器,它和事件处理机制类似,但是事件处理机制是程序组件级别的(比如:按钮的单击事件),而广播事件处理机制是系统级别的。我们可以用Intent来启动一个组件,也可以用...
Android的广播事件处理类似于普通的事件处理。不同之处在于,后者是靠点击按钮这样的组件行为来触发,而前者是通过构建Intent对象,使用sentBroadcast()方法来发起一个系统级别的事件广播来传递信息。广播事件的接收...
Android自学笔记-17-广播接收者(BroadcastReceiver)
该库旨在使用“观察者”设计模式处理所有广播接收器操作,以保持更新所有广播侦听器。 例如,通过使用此库,无论您在应用程序中的哪个位置,都可以跟踪应用程序网络状态。 只需将NetworkReceiver对象注入到您的实例...
当用户收到X中的写入,广播,通话请求或关机通知时,此程序会弹出一个窗口。有点像kwrited,但不需要(或关心)kde支持。
广播接收器的实现 该项目演示了Android中的Broadcast Receiver和Fragments的概念。 该项目由三个应用程序A1,A2和A3组成,这三个应用程序将安装在使用广播接收器相互通信的同一设备上。
短信接收器 传入SMS广播接收器-Android示例在此android应用示例中,我们显示了何时广播任何新的SMS事件(当收到新的SMS时)SMS数据。 接收短信到Android广播接收器。 可以从SMS Recibido接收电子邮件。
Broadcast Receiver Android 广播事件处理 Broadcast Receiver,讲述了广播事件处理机制、Notification、NotificationManager和AlarmManager的使用 第9章 Android中的数据存取 Android中的数据存取,讲述了Android...
界面的上半部显示正在播放的歌曲信息。...播放完当前歌曲,自动切换到下一曲。 使用service进行音乐播放。使用BroadcastReceiver将歌曲信息传输到...main Activity中的broadcast receiver将会监听从service传回来的广播。