0
J'ai essayé de trouver ce qui ne va pas ici pendant quelques heures. Pourquoi ce récepteur de diffusion ne reçoit pas l'intention?Récepteur de diffusion enregistré dynamiquement ne fonctionne pas
static class BReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
Toast.makeText(context, "Got the intent", Toast.LENGTH_LONG).show();
}
}
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mLayout = new FrameLayout(this);
setContentView(mLayout);
final IntentFilter intentFilter = new IntentFilter("com.example.testui.action");
getApplicationContext().registerReceiver(new BReceiver(), intentFilter);
final Intent intent = new Intent(getApplicationContext(), BReceiver.class);
intent.setAction("com.example.testui.action");
getApplicationContext().sendBroadcast(intent);
}
PS. Je n'ai pas défini ce destinataire dans un fichier manifeste, parce que, strictement parlant, ce n'est pas obligatoire.
Oui, il a fait l'trcik. Pourriez-vous expliquer pourquoi cela n'a pas fonctionné sur mon chemin? – I4004
Lorsque vous utilisez l'intention explicite (qui désigne le composant cible par son nom, 'new Intent (getApplicationContext(), BReceiver.class)') android ne regarde que les composants qui ont été ajoutés au AndroidManifest. Comme vous l'avez dit, votre récepteur n'a pas été ajouté. C'est pourquoi vous devez utiliser l'intention implicite (qui n'a qu'une action et une donnée mais pas un nom de composant). [Ici] (http://developer.android.com/guide/components/intents-filters.html) vous trouverez plus de détails sur le fonctionnement des filtres d'intention. –