2010-07-06 28 views
6

Soy nuevo en android platform.please ayudarme cómo el receptor de difusión y filtro Intención se comporta de android.please explicar en línea simple o con example.thanks de antelación ...Android-receptor de la emisión y filtro Intención

+3

Puede ser una buena idea mirar aquí: http://stackoverflow.com/users/366916/bharathi y aceptar respuestas a sus preguntas recientes. –

Respuesta

17

un receptor de radiodifusión es una clase en su proyecto Android, que es responsable de recibir todas las intenciones, que son enviadas por otras actividades mediante el uso de android.content.ContextWreapper.sendBroadcast(Intent intent)

en el archivo de manifiesto de que receicving actividad, se tiene que declarar que es el receptor de radiodifusión clase, por ejemplo:

<receiver android:name="xyz.games.pacman.network.MessageListener"> 
    <intent-filter> 
    <action android:name="xyz.games.pacman.controller.BROADCAST" /> 
    </intent-filter> 
</receiver> 

Como puede ver, también define el filtro de intención aquí, es decir, qué intentos debe recibir el receptor de broadcas.

Luego tiene que definir una clase que extienda BroadcastReceiver. Esta es la clase que ha definido en el archivo de manifiesto:

public class MessageListener extends BroadcastReceiver { 


    /* (non-Javadoc) 
    * @see android.content.BroadcastReceiver#onReceive(android.content.Context, android.content.Intent) 
    */ 
    @Override 
    public void onReceive(Context context, Intent intent) { 
... 
} 

Aquí, se reciben todos los intentos que se hacen pasar a través del filtro y se puede acceder a ellos mediante el parámetro pasado en la llamada al método.

+0

¿A qué se refiere xyz.games.pacman.controller.BROADCAST? No está claro ... –

+0

Es solo el paquete que usó como ejemplo – Bilthon

8

Un BroadcastReceiver se puede registrar de dos maneras: dynamic o static. Static no es más que declarar la acción a través de intent-filter en AndroidManifest.xml para registrar una nueva clase BroadcastReceiver. Dynamic está registrando el receptor desde otra clase. Un intent-filter determina qué acción se debe recibir.

Para crear un BroadcastReceiver, debe extender la clase BroadcastReceiver e ignorar el método onReceive(Context,Intent). Aquí puede verificar el intento entrante con Intent.getAction() y ejecutar el código en consecuencia.

como una nueva clase, estática sería

public class Reciever1 extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     String str = intent.getAction(); 
     if(str.equalsIgnoreCase("HELLO1")) { 
      Log.d("Abrar", "reciever....");    
      new Thread() { 
       public void run() {      
        Log.d("Abrar", "reciever...."); 
        System.out.println("Abrar");       
       } 
      }.start();       
     } 

o, si se colocaron en una clase existente, se le llama de forma dinámica con

intentFilter = new IntentFilter(); 
intentFilter.addAction("HELLO1"); 

//---register the receiver--- 
registerReceiver(new Reciever1(), intentFilter);  
+0

¿Cómo puedo hacerlo entre 2 dispositivos, por ejemplo, enviar datos de uno a otro dispositivo? ¿Qué debería definir? – JPerk

+0

@JPerk necesitaría manejar la conexión, pero luego podría definir una intención personalizada para recibir los datos. Existe la posibilidad de que no utilice una intención del sistema existente de recibir datos personalizados o no desee manejar los datos predeterminados que generalmente contiene. – LoungeKatt

0

BroadcastReceiver: 'puerta' con la que le dice a su aplicación para el sistema operativo Android, su aplicación está interesada en recibir información.

Intent-Filter: Funciona con BroadcastReceiver y dice la información "Qué" está interesado en recibir. Por ejemplo, su aplicación desea recibir información sobre el nivel de la batería.

Cuestiones relacionadas