La comunicación de BroadcastReceiver a Activity es sensible; ¿y si la actividad ya se ha ido?
Si yo fuera tú me gustaría establecer una nueva BroadcastReceiver dentro de la actividad, que recibiría un mensaje de cierre:
private BroadcastReceiver closeReceiver;
// ...
closeReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//EDIT: receiving parameters
String value = getIntent().getStringExtra("name");
//... do something with value
finish();
}
};
registerReceiver(closeReceiver, new IntentFilter(CLOSE_ACTION));
Luego, desde el SMS BroadcastReceiver puede enviar a cabo esta acción:
Intent i = new Intent(CLOSE_ACTION);
i.putExtra("name", "value"); //EDIT: this passes a parameter to the receiver
context.sendBroadcast(i);
Espero que esto ayude?
Mhm ... Estoy registrando el Receptor directamente en el Manifiesto ... y necesito intercambiar datos con el Receptor ... – NonoNever
No hay problema. Los datos se pueden enviar utilizando Extras. i.putExtra ("nombre", "valor"); Sin embargo, solo se pueden pasar tipos primitivos. – Emmanuel
Solución rápida: 'context.sendBroadcast (i);' debe usar el contexto BroadcastReceiver para propagar el intento. – GoRoS