Aller au contenu

Mise en place d'un BroadcastReceiver dans une activity


Chronogps

Recommended Posts

Posté(e)

Etant donné que j'ai besoin de traiter des SMS entrant dans une application (et que je ne vois pas comment transférer des données d'un Receiver a une Activity, je me suis dit que je pouvais peut être m'y prendre différemment en mettant en place le receiver directement dans l'activity de la manière suivante :

   BroadcastReceiver br;
   IntentFilter filter;

(...)
   public void onCreate(Bundle savedInstanceState) 
       {        
(...)
       br = new BroadcastReceiver()
           {
           @Override
           public void onReceive(Context ctx, Intent intent)
               {
               unregisterReceiver(br);
               }
           };        
       filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
       registerReceiver(br, filter);
(...)

Le manifest contient la bonne permission :

Aucune erreur à l'exécution mais le BroadcastReceiver n'est jamais appelé...

Où est l'erreur ? Ce n'est pas possible de faire cela ?

Posté(e)

Je m'auto réponds

Pour une raison que j'ignore il faut mettre en place le registerReceiver dans le onResume :

protected void onResume()

{

super.onResume();

IntentFilter filter = new IntentFilter();

filter.addAction("android.provider.Telephony.SMS_RECEIVED");

registerReceiver(receiver, new IntentFilter(filter));

}

Raison ? (cela m'intéresserait de le savoir)

Posté(e)
Parce que unregisterReceiver(br); ?

Non car il n'est appelé qu'après une réception de SMS (j'ai débuggué : ca ne rentrait jamais dans le OnReceive)

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...