动态注册广播就是不在Manifest中写fliter,之所以这样是因为有时候需要监听该广播并响应。但是有时候又不需要监听,所以需要在代码中动态的注册广播并且当不需要的时候就取消注册。动态注册就不需要在XML中进行注册了
下面以屏幕开启的广播监听为例:
public class ScreenReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (action.equals("android.intent.action.SCREEN_ON")) {
Toast.make(context,"屏幕亮啦",Toast.LENGTH_SHORT).show();
}
}
}
public class MainActivity extends Activity {
private ScreenReceiver receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
receiver = new ScreenReceiver();
IntentFilter filter=new IntentFilter();
filter.addAction("android.intent.action.SCREEN_ON");
registerReceiver(receiver, filter);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}
}