2010-07-14 8 views
0

Je commence à peine à développer Android, et j'ai une question à propos de la communication entre un récepteur et une classe d'activité. Je suis très nouveau sur JAVA et Android, donc j'espère ne pas paraître trop stupide. Je suis en train de développer une application dans laquelle j'intercepte un message SMS puis, en fonction des différents éléments de ce SMS, je pourrais le supprimer une fois enregistré dans la boîte de réception. J'ai une classe de récepteur qui intercepte le message txt, et je suis également capable de supprimer des messages de ma boîte de réception avec du code dans la classe d'activité en utilisant un bouton pour le moment. Le problème que j'ai est de communiquer entre la classe de récepteur et la classe d'activité où le code pour supprimer un message réside. J'ai essayé de mettre ce code directement dans la classe des récepteurs, mais je suis sûr que la plupart d'entre vous savent déjà que la classe BroadcastReceiver ne semble pas supporter ce dont j'ai besoin pour supprimer les messages. J'ai cherché une réponse à ceci pendant un moment, mais n'ai pas pu trouver n'importe quoi. Honnêtement, je ne suis pas sûr d'en savoir assez sur JAVA et Android pour reconnaître une solution si je l'ai vu.Android du récepteur à l'activité

Répondre

0

Si vous devez remplir un emploi sans un regard d'interface dans la création d'un Service, si vous avez besoin interface utilisateur juste commencer une Activity

Vous pouvez utiliser le paramètre Context de la méthode onReceive du récepteur pour commencer une nouvelle service/activité

Vous pouvez utiliser Extras pour passer des paramètres entre les contextes. Vous pouvez donc ajouter l'identifiant du message ou l'intégralité du message et le transmettre à votre service/activité et le traiter.

+0

Merci beaucoup pour la réponse rapide, c'est très apprécié. J'ai suivi votre conseil et une fois que je reçois le sms je commence un service pour supprimer certains messages. Le problème est que la fonction delete est appelée depuis la méthode onCreate du service. Il semble que cela permet uniquement d'exécuter la fonction de suppression la première fois que vous recevez un message txt. Les messages textuels suivants ne déclencheront pas la fonction de suppression, car je suppose que le service a déjà été créé. J'ai essayé de mettre l'appel de fonction dans une fonction onResume du service mais cela n'a pas fonctionné non plus. Avez-vous une idée comment – Patrick

+0

Nevermind, j'ai déplacé l'appel de fonction à la méthode onStart et puis j'arrête le service une fois que j'ai fait ce que je veux faire et qui a résolu mon problème. – Patrick

0

Vous pouvez implémenter la logique de gestion des messages à l'aide d'un IntentService. Lorsque votre destinataire reçoit le nouveau message, lancez IntentService en transmettant une intention avec les données du message.

Récepteur

onReceive(Context context, Intent intent) { 
    //Setup Intent 
    Intent i = new Intent(context, MyIntentService.class); 
    i.setAction(MyIntentService.HANDLE_MESSAGE);   
    //Pass data to intent 
    i.putExtra(MyIntentService.MESSAGE_DATA, data); 
    //Start Intent Service   
    context.startService(i); 
} 

MyIntentService

onHandleIntent(Intent i){ 
    String action = i.getAction(); 
    if(action != null && action.equals(MyIntentService.HANDLE_MESSAGE){ 
     //Get data and implement message logic 
    } 
} 

Hope it helps.

Questions connexes