靜態(tài)和動態(tài)兩種注冊方法:
- 靜態(tài)注冊, 在AndroidManifest.xml中加上<Receiver>標簽徒爹。
- 動態(tài)注冊, 通過 Context.registerReceiver()方法進行注冊荚醒。比如在onResume中注冊,在onPause中注銷隆嗅。
public class MyReceiver extends BroadcastReceiver{
public MyReceiver() {
super();
Log.d(AppConstants.LOG_TAG, "Receiver constructor");
}
@Override
public void onReceive(Context context, Intent intent) {
Log.d(AppConstants.LOG_TAG, "onReceive");
String message = intent.getStringExtra("msg");
Log.i(AppConstants.LOG_TAG, message);
Toast.makeText(context, "Received! msg: " + message, Toast.LENGTH_SHORT).show();
}
}
發(fā)送廣播
public static final String BROADCAST_ACTION ="com.example.demobroadcast.BroadcastAction";
Intent intent = new Intent();
intent.setAction(BROADCAST_ACTION);
intent.putExtra("msg", "發(fā)送廣播");
sendBroadcast(intent);
動態(tài)注冊
@Override protected void onResume() {
super.onResume();
mReceiver = new MyReceiver();
IntentFilter intentFilter= new
IntentFilter(BROADCAST_ACTION); registerReceiver(mReceiver,
intentFilter);
}
@Override protected void onPause() {
super.onPause();
unregisterReceiver(mReceiver);
}
靜態(tài)注冊
<receiver
android:name="com.example.demobroadcast.MyReceiver">
<intent-filter >
<action android:name="com.example.demobroadcast.BroadcastAction" />
</intent-filter>
</receiver>