JavascriptProva

venerdì 11 novembre 2016

Ripasso BroadcastReceiver nel tentativo di intercettare il tasto Home.

Provo a creare un broadcastReceiver.
Lo creo nello stesso modulo.

L'ho nidificato nella classe dell'Activity:
    public class MyReceiver extends BroadcastReceiver{

        @Override
        public void onReceive(Context context, Intent intent) {
            
        }
    }
Il metodo onReceive viene dato di default.

Per la registrazione, bisogna prima istanziare la classe creata.
Ci provo...

Scrivo intanto un'azione per l'evento onReceive:
    public class MyReceiver extends BroadcastReceiver{

        @Override
        public void onReceive(Context context, Intent intent) {
            System.out.println("ricevuto");
        }
    }


Ecco:
public class MainActivity extends AppCompatActivity {

    MyReceiver myReceiver;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        myReceiver=new MyReceiver();

    }
Ora devo definire un IntentFilter e registrare il Receiver insieme a questo IntentFilter in onResume, deregistrandolo in onPause
Provo a usare l'intentFilter che ho trovato nella costruzione dell'HomeWatcher:
        myReceiver=new MyReceiver();
        intentFilter=new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
Quindi registro in onResume e deregistro in onPause:
    @Override
    protected void onResume(){
        super.onResume();
        registerReceiver(myReceiver,intentFilter);
    }

    @Override
    protected void onPause(){
        super.onPause();
        unregisterReceiver(myReceiver);
    }
Funziona. Intercetta la pressione del tasto Home.
Ma non mi previene la chiusura dell'activity.

Nessun commento:

Posta un commento