Android4开发入门经典 之 第六部分:Broadcast【私塾在线原创】

Broadcast基本概念

Broadcast是什么
是一种能在各个应用程序之间传递数据的机制。类似于现实中的广播体系,有广播方和接收方,双方的关系是多对多的,之间传递的就是Intent对象。
 
Broadcast能做什么
1:实现了不同的程序之间的数据传输与共享,比如我们的应用想要拦截到短信或电话,就可以接收相应的广播,然后进行处理。
2:起到了一个通知的作用,比如在service中要通知主程序,更新主程序的UI等。
Broadcast有什么
1:广播方,就是发出广播的应用
2:接收方,就是接收相应的广播信息并处理的应用
3:Intent对象,广播方和接收方传递数据的对象。
 

Broadcast Receiver示例

在广播方需要做两件事情:一是组织并封装Intent对象;二是发送广播。如下:

java代码:
Intent in = new Intent();
in.setAction(Intent.ACTION_EDIT);
in.putExtra("broadcast", "test");
HelloWorldActivity.this.sendBroadcast(in);
n在接收方需要继承BroadcastReceiver并做广播的相应处理
public class MyReceiver  extends BroadcastReceiver{
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(Intent.ACTION_EDIT)){
Toast.makeText(context, "receiver-"+intent.getExtras().getString("broadcast"),Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(context, "receiver-but not edit",Toast.LENGTH_SHORT).show();
}
}
}

需要在配置文件AndroidManifest.xml中,在activity后,在application之前,注册receiver,同时配置intent-filter,示例如下:

java代码:
注意:使用这种方式注册的监听器,无论这个应用是否运行,都能够接收到相应的广播消息。
也可以通过程序来动态的注册receiver,同时配置intent-filter,这样就不需要在配置文件中配置了,示例如下:

java代码:
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_EDIT);
HelloWorldActivity.this.registerReceiver(new MyReceiver(), intentFilter);
要记得在发出广播前注册。
可以使用unregisterReceiver方法来取消注册。

接收短信示例

可以使用Broadcast Receiver来接收短信,示例如下:

java代码:
1:在AndroidManifest.xml中要注册权限:

2:在MyReceiver上设置IntentFilter

3:在MyReceiver里面进行短信解析
Bundle b = intent.getExtras();
Object[] bjs = (Object[])b.get("pdus");
SmsMessage [] ms = new SmsMessage[objs.length];
 
for(int i=0;i

Broadcast Receiver开发建议

Broadcast Receiver 的生命周期
Broadcast Receiver对象只在执行onReceive方法期间是有效的,每次执行完成,都会被销毁掉,下次接收广播的时候,又会重新创建Receiver对象。
系统内置的Broadcast Receiver可以接收的事件
可以在文档中Intent对象中查找,里面有一个“Standard Broadcast Actions”,这里面的就是可以在Broadcast中使用的。
要确保Intent的命名空间和类名是独有的,不会和其他应用的冲突
如果不希望其他的应用发送的广播被你的Receiver接收到,可以在Receiver上配置android:exported="false"
 


视频配套PPT,视频地址【  Android4开发入门经典独家视频课程

原创内容 转自请注明【 http://sishuok.com/forum/blogPost/list/0/2745.html#7723

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26715458/viewspace-717429/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26715458/viewspace-717429/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值