作為Android的四大元件之一,BroadcastReceiver 本質上是一種全局性的監聽器,可以友善的實作不同元件間的通信,比如用戶端程式與startService()方法啟動的Service直接的通信。
發送廣播:
與 Activity 、Service 一樣隻需兩步:
1. 建立 Intent.
2. 調用 Context 的 sendBroadcast() 或者 sendOrderedBrocast() 方法來啟動指定的 BroadcastReceiver。
Intent intent = new Intent("BROADCAST_ACTION");
intent.putExtra("com.test.data", 1);// 名字必須帶有包的字首
sendBroadcast(intent);
接收廣播:
1. 實作BroadcastReceiver ,并重寫onReceiver(Context context,Intent intent),用來執行指定的收到廣播後的操作。
2. 指定與該 BroadcastReceiver 能比對的Intent。
(1)動态注冊,不需要配置清單檔案。Java 代碼中:
receiver = new myBrocastReceiver();
IntentFilter filter = new IntentFilter(ConstantValues.BROCAST_CODE1);
registerReceiver(receiver, filter);// 别忘了取消。
(2)靜态注冊。AndroidMainfest.xml中
<receiver android:name="com.test.Receiver" >
<intent-filter>
<action android:name="com.test.action.FLAG" />
</intent-filter>
</receiver>
class myBrocastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.d(TAG, "myBrocastReceiver");
int value = intent.getIntExtra("com.test.data", -1);
switch (value) {
case 0x001:
break;
default:
break;
}
}