接上篇,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>