j'ai une classe MyBroadcastReceiver mis en œuvre, et j'ai essayé d'enregistrer un récepteur de diffusion dans l'exécution avec:Quel est le problème avec mon récepteur de diffusion de registre?
String MY_ACTION = "DUMMY";
MyBroadcastReceiver receiver = new MyBroadcastReceiver();
IntentFilter intentFilter = new IntentFilter(MY_ACTION);
Log.i(TAG, "intentFilter: " + intentFilter.getAction(0));
Intent intent = context.registerReceiver(receiver, intentFilter);
Log.i(TAG, "intent returned after registering:" + intent);
Intent queryIntent = new Intent(MY_ACTION);
PackageManager pm = context.getPackageManager();
List<ResolveInfo> resolveInfos = pm.queryBroadcastReceivers(queryIntent, 0);
Log.i(TAG, "list of receivers:" + resolveInfos.toString());
j'ai couru une émission de la coquille adb:
am broadcast \
-n com.foo.foo.foo/.MyBroadcastReceiver \
-a DUMMY
J'ai aussi quelques journal. i dans mon onReceive() (implémenté dans MyBroadcast Receiver).
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "in Broadcasting Receiver anyway");
if (intent != null) {
...
}
}
}
Le résultat est:
- le journal de intentFilter.getAction (0) donne la bonne action
- le journal d'intention après l'enregistrement donne nulle
- I eu la liste des destinataires vides du journal.
- Et le OnReceive n'a jamais été entré (dans le journal que je pouvais voir que )
Je suppose qu'il ya des erreurs avec ma part de registre? Tous les conseils/conseils seront très appréciés !!
merci. J'ai mis à jour la question avec mon code de MyBroadcastReceiver. –
Ajout d'une autre idée à la fin de ma réponse. Aussi, quel est le contexte dans votre code 'context.registerReceiver()'? Appelez-vous cela d'une «activité» ou un «service» ou quoi? –
Le contexte est obtenu en utilisant context.getApplicationContext() et en boucle. –