2017-04-06 1 views
-1

Donc, je découvrais BroadcastReceiver dans android. BroadcastReceivers sont basés sur des modèles de conception d'observateurs (ce qui les rend très intéressants).
Donc, ce que j'essaie de réaliser est de diffuser mon message et dans la même activité que je veux recevoir le message (Juste à des fins de test). Voici l'extrait de codeImpossible de recevoir la diffusion dans la même activité

Log.d("ABC", "sending"); 
    Intent intent = new Intent("com.yourcompany.testIntent"); 
    intent.putExtra("value", "test"); 
    sendBroadcast(intent); 



    Log.d("ABC", "sent"); 

    IntentFilter filter = new IntentFilter("com.yourcompany.testIntent"); 
    BroadcastReceiver receiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      Log.d("ABC","INSIDE "); 
      String value = intent.getExtras().getString("value"); 
     } 
    }; 

    Log.d("ABC", "receiving"); 
    registerReceiver(receiver, filter); 
    Log.d("ABC", "received"); 

Voici la sortie débogué

04-06 20: 40: 52,446 20149-20149/com.example.illuminati.broadcastreceiver D/ABC: l'envoi d' 04-06 20: 40: 52.447 20149-20149/com.example.illuminati.broadcastreceiver D/ABC: envoyé 04-06 20: 40: 52.448 20149-20149/com.example.illuminati.broadcastreceiver D/ABC: réception 04-06 20: 40: 52.453 20149-20149/com.example.illuminati.broadcast récepteur D/ABC: reçu

Pourquoi ne reçoit pas à l'intérieur de la méthode OnReceive()
Que suis-je manque ici
Toute aide?

Répondre

3

Vous envoyez votre message à diffusion générale avant d'enregistrer le récepteur de diffusion. Essayez de faire de la manière et cela fonctionnera suivant:

IntentFilter filter = new IntentFilter("com.yourcompany.testIntent"); 
    BroadcastReceiver receiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      Log.d("ABC", "INSIDE "); 
      String value = intent.getExtras().getString("value"); 
     } 
    }; 
    registerReceiver(receiver, filter); 
    Intent intent = new Intent("com.yourcompany.testIntent"); 
    intent.putExtra("value", "test"); 
    sendBroadcast(intent); 
+0

Une erreur aussi stupide. Je ne peux pas vous remercier assez. Merci beaucoup :) –

+0

Vous êtes les bienvenus, continuez d'apprendre! – AlexTa