BroadcastReceiver ci consente di trasmettere o ricevere messaggi dal sistema o da altre applicazioni Android,ad esempio se la batteria è scarica o se è stata attivata o disattivata la modalità aereo.Le trasmissioni di sistema vengono inviate a tutte le app iscritte per ricevere l’evento. Il messaggio broadcast è racchiuso in un oggetto Intent.
Ecco un esempio:
package com.example.broadcastReceiver.activities;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import com.example.broadcastReceiver.R;
import android.content.*;
import android.view.*;
import android.widget.*;
import android.provider.*;
public class MainActivity extends AppCompatActivity {
private AirplaneModeReceiver airplaneModeReceiver = new AirplaneModeReceiver();
private class AirplaneModeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (isAirplaneMode(context.getApplicationContext())) {
Toast.makeText(context,”AirPlane mode is on”,Toast.LENGTH_LONG).show();
} else {
Toast.makeText(context, “AirPlane mode is off”,Toast.LENGTH_LONG).show();
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onResume() {
super.onResume();
IntentFilter intentFilter = new IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED);
if(getApplicationContext()!=null) {
registerReceiver(airplaneModeReceiver,intentFilter);
}
}
@Override
public void onPause() {
super.onPause();
if(getApplicationContext()!=null) {
unregisterReceiver(airplaneModeReceiver);
}
}
private boolean isAirplaneMode(Context context) {
return
Settings.System.getInt(context.getContentResolver(),
Settings.System.AIRPLANE_MODE_ON,0)!=0;
}
}