您的位置:首页 > 移动开发 > Android开发

Android四大组件之广播接收器(二)

2016-03-06 17:20 766 查看
接上篇,Android四大组件之广播接收器(一)本文主要总结广播的发送。

标准广播

1、首先创建接收器MyBroadcastReceiver:

public class MyBraodcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "received in MyBroadcastReceiver",
Toast.LENGTH_SHORT).show();
}
}


2、静态注册接收器

<receiver android:name=".MyBraodcastReceiver">
<intent-filter android:priority="333">
<action android:name="com.horizon.broadcastTest"/>
</intent-filter>
</receiver>


3、发送标准广播

Intent intent = new Intent("com.horizon.broadcastTest");
sendBroadcast(intent);


有序广播

基于标准广播改动发送方法即可

Intent intent = new Intent("com.horizon.broadcastTest");
sendOrderedBroadcast(intent, null);


广播拦截

abortBroadcast();


接收器优先级设置

<intent-filter android:priority="111">


完整广播拦截代码:(本代码主要演示有序广播的拦截)

接收器一

public class MyBraodcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "received in MyBroadcastReceiver",
Toast.LENGTH_SHORT).show();
abortBroadcast();
}
}


接收器二

public class AnotherReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "received in AnotherReceiver",
Toast.LENGTH_SHORT).show();
}
}


发送代码

public class MainActivity extends AppCompatActivity {

private Button receive;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
receive = (Button) findViewById(R.id.sendBroadcast);
receive.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("com.horizon.broadcastTest"); sendOrderedBroadcast(intent, null);
}
});
}
}


注册关键代码

<!-- 分别注册两个接收器-->
<receiver android:name=".AnotherReceiver">
<intent-filter android:priority="111">
<action android:name="com.horizon.broadcastTest"/>
</intent-filter>
</receiver>
<receiver android:name=".MyBraodcastReceiver"> <intent-filter android:priority="333"> <action android:name="com.horizon.broadcastTest"/> </intent-filter> </receiver>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: