2012-07-26 7 views
9

Si registro un receptor de radiodifusión decir en mi actividad como esta,android: ¿se exportan receptores de difusión no manifiestos?

@Override 
protected void onResume() { 
    super.onResume(); 

    myReceiver = new BroadcastReceiver() { ... }; 
    IntentFilter filter = new IntentFilter("com.example.MY_ACTION"); 
    registerReceiver(myReceiver, filter); 
} 

se exporta este receptor? si otra aplicación difunde com.example.MY_ACTION, ¿se recibirá por myReceiver?

si es así, supongo que necesito usar el formulario registerReceiver() que acepta un permiso de serie, y luego definir ese permiso en mi manifiesto, dándole un alto nivel de protección (como la firma). ¿Es eso correcto? ¿Hay alguna forma más simple?

gracias.

+1

Se exportan. Para conocer las formas de protección, mira esto: http://stackoverflow.com/questions/9528608/restricting-android-broadcast-receiver-from-specific-app – Kaediil

+2

esa publicación trata de receptores registrados manifiestamente. específicamente estoy preguntando sobre receptores registrados programáticamente. –

+0

Hace la diferencia. Una vez que su aplicación se está ejecutando y usted inicia el receptor, cualquiera puede enviarle intenciones. – Kaediil

Respuesta

1

De la documentación API de la API BroadcastReceiver:

Si no necesita enviar transmisiones a través de aplicaciones, considere el uso de esta clase con LocalBroadcastManager en lugar de los más instalaciones generales que se describen a continuación. Esto le dará una implementación mucho más eficiente (no se necesita comunicación entre procesos) y le permiten evitar problemas de seguridad relacionados con otras aplicaciones que pueden recibir o enviar sus transmisiones.

De esa manera al menos puede mantener el receptor solo dentro de su aplicación.

+2

aunque esto técnicamente no responde mi pregunta, es una solución al problema implícito. –

+1

Solución no viable si tiene que enviar transmisiones dentro de la aplicación pero a través de los límites del proceso. –

+0

@JuusoOhtonen bien, pero de eso no se trataba la pregunta, ¿verdad? – Kaediil

Cuestiones relacionadas