广播机制

android的广播分三种:1、常规广播:所有匹配的接收器都会接收到此广播。                              

      发送方式:sendBroadcast(intent)2、粘性广播:可以在接受到注册之前发出的广播。最常见的例子就是WIFI。          

     发送方式:sendStickyBroadcast(intent)

3、有序广播:根据广播接收器的意图过滤器的priority属性值的大小一次调用,并可以通过调用abortBroadcast()阻止广播继续向下传播。

发送方式:sendOrderedBroadcast(intent,"permission").这里短信的广播机制就是有序广播,因此可以在接收到广播之后做点儿什么,加黑或者转发什么的。

<!-- 接收短信 (短信广播属于有序广播)-->

<receiverandroid:name=".SmsgBroadcastReceiver">

<!--android:priority="1000"将这个接收器的优先级别声明到最大,接收到广播之后可以对广播序列进行操作-->

<intent-filterandroid:priority="1000">

<actionandroid:name="android.provider.Telephony.SMS_RECEIVED"/>

</intent-filter>

</receiver>

    </application>

还需要接受短信的权限

然而有序广播是按照接收者声明的优先级别,被接收者依次接收广播。如:A的级别高于B,B的级别高于C,那么,广播先传给A,再传给B,最后传给C 。优先级别声明在 intent-filter 元素的 android:priority 属性中,数越大优先级别越高,取值范围:-1000到1000,优先级别也可以调用IntentFilter对象的setPriority()进行设置 。有序广播的接收者可以终止广播Intent的传播,广播Intent的传播一旦终止,后面的接收者就无法接收到广播。

  另外,有序广播的接收者可以将数据传递给下一个接收者,如:A得到广播后,可以往它的结果对象中存入数据,当广播传给B时,B可以从A的结果对象中得到A存入的数据。

  Context.sendBroadcast()

相关推荐