Android 的定向广播 局部广播

         在android 应用开发中,有时候需要使用广播机制,但是又不想让其他程序收到,只想让指定的程序收到,这就是定向广播,其实,既然定了向,就不能叫广播了,只能说是利用android的广播机制来进行通信而已。

         AndroidSDK提供了LocalBroadcastManager类用来在程序内部进行广播,用法和正常广播使用一样,只是注册和发送都只能在同一个程序内部运行。

       但是有时候,我想发出的广播只让固定的程序收到,这个程序也许并不是发出广播的程序,或者这个广播和某个全局广播一样,我不想影响其他程序。这个时候可以再发送的Intent上调用

setPackage方法设置接收广播的程序的包名。而包名可以通过Context的getPackageName()得到,或者直接写在常量里。

         我做的应用中需要对所有的u盘进行读写测试,但是u盘的插入时机是不定的,也许是程序运行之前,也许是在之后。程序刚运行时,如果使用扫描目录的方式那么就找不到后插入的u盘,如果不停扫描会浪费cpu,而如果使用接收u盘挂载广播Intent.ACTION_MEDIA_MOUNTED,那么接收不到之前已经插入的u盘的广播。两种方法都用虽然可以,但是不利于程序的修改和扩展。所以我在程序开始运行时扫描u盘,然后将扫描到的路径伪造成挂载广播发出去,但是限定接受者的包名,这样就不会影响其他程序。而且让自己的程序收到了所有的u盘广播。统一了程序模型框架,可谓两全其美。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值