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