Chronogps Posté(e) 9 mai 2010 Posté(e) 9 mai 2010 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 ?
Chronogps Posté(e) 9 mai 2010 Auteur Posté(e) 9 mai 2010 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)
Chronogps Posté(e) 11 mai 2010 Auteur Posté(e) 11 mai 2010 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)
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.