2009-12-30 4 views
3

Je voudrais envoyer un message SMS. Si le texte est trop long, je le divise en plusieurs messages. Je suis en train de mettre quelques informations supplémentaires dans l'intention « envoyé » à savoir quelle partie a été envoyé, et que toutes les pièces sont complètes:Mettre des données dans l'intention envoyée par SMS?

ArrayList<String> messageParts = ...; 
for (int i = 0; i < messageParts.size(); i++) { 
    sms.sendTextMessage(
     address, 
     null, 
     messageParts.get(i), 
     generateIntent(context, messageParts.size(), i), 
     null)); 
} 

PendingIntent generateIntent(Context context, int partCount, int partIndex) 
{ 
    Intent intent = new Intent("SMS_SENT"); 
    intent.putExtra("partCount", partCount); 
    intent.putExtra("partIndex", partIndex); 
    return PendingIntent.getBroadcast(context, 0, intent, 0); 
} 

Le message est envoyé, et j'attraper l'intention lorsque chaque une partie est envoyée - mais l'intention contient toujours les mêmes données. Par exemple, "partIndex" est toujours zéro, même si pour le second message, il doit être un. On dirait que la même intention continue d'être projetée sur mon récepteur de diffusion. Quelle est la bonne façon de faire cela?

Merci

Répondre

8

Essayez d'utiliser FLAG_ONE_SHOT ou autrement annuler la PendingIntent précédente avant d'essayer de créer un nouveau.

+1

Exactement; vous devez indiquer au framework de ne pas réutiliser le même 'PendingIntent'. Bien que pour l'envoi de plusieurs messages, ne pouvez-vous pas simplement utiliser la méthode 'sendMultipartTextMessage'? –

+0

J'ai utilisé l'indicateur PendingIntent.FLAG_CANCEL_CURRENT et sendMultipartTextMessage dans mon code. – Samuh

Questions connexes