广播机制
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()