Android学习笔记 - 广播篇 (Broadcast)

1.Android的广播机制介绍
 当Android系统接收到一个事件后(如电话响、收到短信),触发事件并能手广播
 
2.BroadcastReceiver的作用
 对有注册广播接收的程序进行广播,通知其它感兴趣的程序
 
3.BroadcastReceiver的编写方法
 1.在AndroidManifest.xml中注册事件:

  1. <receiver android:name=".TestReceiver">  
  2.     <intent-filter>  
  3.         <action android:name="android.intent.action.EDIT" />  
  4.     </intent-filter>  
  5. </receiver>  

 2.创建一个类,继承于BroadcastReceiver,用于接收广播

  1. public class BCReceiver extends BroadcastReceiver{  
  2.     public void BCReceiver(){  
  3.     }  
  4.     @Override  
  5.     public void onReceive(Context context, Intent intent){  
  6.         System.out.println("receive a broadcast");  
  7.     }  
  8. }  


 
 3.编写一个类,用于发送广播(测试用)

  1. Intent intent = new Intent();  
  2. intent.setAction(Intent.ACTION_EDIT);  
  3. CPActivity.this.sendBoardcase(intent);  

4.BroadcastReceiver的生命周期
 在Android系统接收到一个广播时,会查找符合的广播程序
 如果符合intent-filter的话,则会创建一个广播接收类
 广播接收类在触发onReceive方法后,就会被销毁,下次重新创建

 

5.注册BroadcastReceiver的方法
 BroadcastReceiver用于监听被广播的事件,为了达到这个目的,BroadcastReceiver必须进行注册,注册的方法:
 1.在应用程序的代码当中进行注册
 2.在AndroidManifest.xml当中进行注册(上节已介绍)
 两者区别:注册在xml文件中的话,即使程序被关闭了,也会接收到广播
 
 代码绑定广、解除绑定播接收方法:

  1. //代码绑定广播接收方法:  
  2. SmsReceiver smsReceiver = new SmsReceiver(); //创建监听类  
  3. IntentFilter filter = new IntentFilter(); //创建过滤器  
  4. filter.addAction("android.provider.Telephony.SMS_RECEIVED"); //向过滤器添加动作  
  5. BCActivity.this.registerReceiver(smsReceiver,filter); //注册广播  
  6.   
  7. //代码解除绑定广播接收方法:  
  8. BCActivity.this.unregisiterReceiver(smsReceiver);  

 在模拟器中发送短消息:
 DDMS - Emulator Control - SMS中,填写号码和内容,点击“Send”按钮

 接收广播后的相关处理:

  1. public void onReceive(Context context, Intent intent){  
  2.     Bundle bundle = intent.getExtras(); //接收Intent对象中的数据  
  3.     Object[] obj = (Object[])bundle.get("pdus"); //  
  4.     SmsMessage[] messages = new SmsMessage[obj.length]; //创建短消息类型数组  
  5.     for(int i=0; i<obj.length; i++){  
  6.         messages[i] = SmsMessage.createFromPdu((byte[]obj[i]); //获取一条短信  
  7.         System.out.println(messages[i].getDisplayMessageBody()); //打印消息体  
  8.     }  
  9. }  


 
6.Android内置的BroadcastReceiver
 在帮助文档中的Intent类页面中,找到常量中有“Broadcast Action”的相关ACTION
 ACTION_CAMERA_BUTTON //照相按钮被点击
 ACTION_BATTERY_LOW //电池低电
 ACTION_DATE_CHANGED //
 ACTION_POWER_CONNECTIED //连接USB充电
 ACTION_REBO0OT //重启系统
 ACTION_SCREEN_ON //屏幕被打开


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值