Broadcast Receiver and Intent Filter
Broadcast Receiver and Intent Filter
filter
public class MainActivity extends AppCompatActivity implements IAirplaneModeProcessable {
AirplaneBroadcastReceiver receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
@Override
public void airplaneProcess(boolean isAirplaneMode) {
String text = "Airplane mode is off";
if (isAirplaneMode) {
text = "Airplane mode is on";
}
TextView status = findViewById(R.id.airplaneStatus);
status.setText(text);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}
}
interface IAirplaneModeProcessable {
public void airplaneProcess(boolean isAirplaneMode);
}
AirplaneBroadcastReceiver(IAirplaneModeProcessable processor) {
this.processor = processor;
}
@Override
public void onReceive(Context context, Intent intent) {
//only process the ACTION_AIRPLANE_MODE_CHANGED
if(intent.getAction().compareTo( Intent.ACTION_AIRPLANE_MODE_CHANGED)==0){
this.processor.airplaneProcess(intent.getBooleanExtra("state", false));
}
}
}