Android四大组件—广播

来源:互联网 发布:2017软件设计师 编辑:程序博客网 时间:2024/05/22 21:28

1.广播的定义

在Android中BroadcastReceiver作为Android四大组件之一,不像Activity,没有可显示的界面。BroadcastReceiver包括两个概念,广

播发送者和广播接收者(Receiver),这里的广播实际就是指Intent,程序可以自己发送广播自己接收,也可以接受系统或其他应用的广

播或是发送广播给其他应用程序,BroadcastReceiver是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver是对

发送出来的 Broadcast进行过滤接受并响应的一类组件,接受全局事件的响应,首先在需要发送信息的地方,把要发送的信息和用于过

滤的信息(如Action、Category)装入一个Intent对象,然后通过调用 sendOrderBroadcast()或sendStickyBroadcast()方法,把 Intent对

象以广播方式发送出去。

  当Intent发送以后,所有已经注册的BroadcastReceiver会检查注册时的IntentFilter是否与发送的Intent相匹配,若匹配则就会调

用BroadcastReceiver的onReceive()方法。所以当我们定义一个BroadcastReceiver的时候,都需要实现onReceive()方法。


2.注册BroadcastReceiver有两种方式


1).动态注册

IntentFilter intentFilter = new IntentFilter();intentFilter.addAction("com.pyt.yu.tian");//为BroadcastReceiver指定action,使之用于接收同action的广播registerReceiver(myBoadCast,intentFilter);


2).静态注册

<receiver android:name=".MyBoadCast">       <intent-filter>               <action android:name="com"></action>       </intent-filter></receiver>


2.编写广播接收类

public class MyBoadCast extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        Log.e("main","我接收到了");        Toast.makeText(context,"我接收到了",Toast.LENGTH_LONG);    }}


3.发送广播

Intent intent =new Intent();                intent.setAction("com");                sendBroadcast(intent);


4.常用系统广播

广播名说明备注Intent.ACTION_AIRPLANE_M关闭或打开飞行模式时的广播Intent.ACTION_BATTERY_CH充电状态,或者电池的电量发生变化电荷级别改变,只能在代码注册Intent.ACTION_BATTERY_LO电池电量低Intent.ACTION_BATTERY_OK电池电量充足Intent.ACTION_AIRPLANE_MODE_CHANGED关闭或打开飞行模式Intent.ACTION_BATTERY_CHANGED充电状态,或者电池的电量发生变化电荷级别改变,只能在代码注册Intent.ACTION_BATTERY_LOW电池电量低Intent.ACTION_BATTERY_OKAY电池电量充足从电池电量低变化到饱满时会发出广播Intent.ACTION_BOOT_COMPLETED在系统启动完成后,这个动作被广播一次只有一次Intent.ACTION_CAMERA_BUTTON按下照相时的拍照按键时发出的广播硬件按键Intent.ACTION_CLOSE_SYSTEM_DIALOGS当屏幕超时进行锁屏时,当用户按下电源按钮,长按或短按(不管有没跳出话框),进行锁屏Intent.ACTION_CONFIGURATION_CHANGED设备当前设置被改变时发出的广播界面语言,设备方向,等 请参考Configuration.javaIntent.ACTION_DATE_CHANGED设备日期发生改变时Intent.ACTION_DEVICE_STORAGE_LOW设备内存不足时发出的广播此广播只能由系统使用,其它APP不可用Intent.ACTION_DEVICE_STORAGE_OK设备内存从不足到充足时发出的广播此广播只能由系统使用,其它APP不可用Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE移动APP完成之后,发出的广播移动是指:APP2SDIntent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE正在移动APP时,发出的广播移动是指:APP2SDIntent.ACTION_GTALK_SERVICE_CONNECTEDGtalk已建立连接时发出的广播Intent.ACTION_GTALK_SERVICE_DISCONNECTEDGtalk已断开连接时发出的广播Intent.ACTION_HEADSET_PLUG在耳机口上插入耳机时发出的广播Intent.ACTION_INPUT_METHOD_CHANGED改变输入法时发出的广播Intent.ACTION_LOCALE_CHANGED设备当前区域设置已更改时发出的广播Intent.ACTION_MANAGE_PACKAGE_STORAGE表示用户和包管理所承认的低内存状态通知应该开始Intent.ACTION_MEDIA_BAD_REMOVAL未正确移除SD卡扩展卡已经从SD卡插槽拔出,但是挂载点 (mount point) 还没解除 (unmount)Intent.ACTION_MEDIA_BUTTON按下”Media Button” 按键时发出的广播有”Media Button” 按键的话(硬件按键)Intent.ACTION_MEDIA_CHECKING插入外部储存装置比如SD卡时,系统会检验SD卡,此时发出的广播Intent.ACTION_MEDIA_EJECT已拔掉外部大容量储存设备发出的广播不管有没有正确卸载Intent.ACTION_MEDIA_MOUNTED插入SD卡并且已正确安装扩展介质被插入而且已经被挂载Intent.ACTION_MEDIA_NOFS拓展介质存在,但使用不兼容FS(或为空)的路径安装点检查介质包含在Intent.mData领域Intent.ACTION_MEDIA_REMOVED外部储存设备已被移除,扩展介质被移除不管有没正确卸载,都会发出此广播Intent.ACTION_MEDIA_SCANNER_FINISHED已经扫描完介质的一个目录Intent.ACTION_MEDIA_SCANNER_SCAN_FILE请求媒体扫描仪扫描文件并将其添加到媒体数据库Intent.ACTION_MEDIA_SCANNER_STARTED开始扫描介质的一个目录Intent.ACTION_MEDIA_SHARED扩展介质的挂载被解除 (unmount)它已经作为 USB 大容量存储被共享Intent.ACTION_PACKAGE_ADDED成功的安装APK数据包括包名(最新安装的包程序不能接收到这个广播)Intent.ACTION_PACKAGE_CHANGED一个已存在的应用程序包已经改变包括包名Intent.ACTION_PACKAGE_DATA_CLEARED清除一个应用程序的数据时发出的广播清除包程序不能接收到这个广播Intent.ACTION_PACKAGE_INSTALL触发一个下载并且完成安装时发出的广播比如在电子市场里下载应用Intent.ACTION_PACKAGE_REMOVED成功的删除某个APK之后发出的广播正在被安装的包程序不能接收到这个广播Intent.ACTION_PACKAGE_REPLACED替换一个现有的安装包时发出的广播(不管现在安装的APP比之前的新还是旧Intent.ACTION_PACKAGE_RESTARTED用户重新开始一个包重新开始包程序不能接收到这个广播Intent.ACTION_POWER_CONNECTED插上外部电源时发出的广播Intent.ACTION_POWER_DISCONNECTED已断开外部电源连接时发出的广播Intent.ACTION_REBOOT重启设备时的广播Intent.ACTION_SCREEN_OFF屏幕被关闭之后的广播Intent.ACTION_SCREEN_ON屏幕被打开之后的广播Intent.ACTION_SHUTDOWN关闭系统时发出的广播Intent.ACTION_TIMEZONE_CHANGED时区发生改变时发出的广播Intent.ACTION_TIME_CHANGED时间被设置时发出的广播Intent.ACTION_TIME_TICK当前时间已经变化(正常的时间流逝)每分钟都发送,只能通过来注册Intent.ACTION_UID_REMOVED一个用户ID已经从系统中移除发出的广播Intent.ACTION_UMS_CONNECTED设备已进入USB大容量储存状态时发出的广播Intent.ACTION_UMS_DISCONNECTED设备已从USB大容量储存状态转为正常状态时发出的广播Intent.ACTION_WALLPAPER_CHANGED设备墙纸已改变时发出的广播Intent.ACTION_USER_PRESENT用户唤醒设备Intent.ACTION_NEW_OUTGOING_CALL拨打电话




阅读全文
0 0
原创粉丝点击