Android 的定向广播 局部广播

来源:互联网 发布:淘宝代销物流怎么设置 编辑:程序博客网 时间:2024/06/11 14:20

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

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

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

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

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

1 0