2010-11-06 6 views
4

Je veux être en mesure d'extraire le texte des SMS reçus. Je ne suis pas sûr si je devrais utiliser des fournisseurs de contenu ou le message SMS est inclus dans l'intention reçue par le récepteur de diffusion.Android - Extrait du texte de SMS

J'ai un récepteur de diffusion en attente de SMS, et je veux inspecter le contenu du message reçu.

Merci.

Répondre

5

Vous pouvez créer SmsMessage instances de la Intent dans votre BroadcastReceiver comme suit:

Bundle bundle = intent.getExtras(); 
Object[] pdus = (Object[])bundle.get("pdus"); 
SmsMessage[] messages = new SmsMessage[pdus.length]; 
for (int i = 0; i < pdus.length; i++) { 
    messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]); 
    //messages[i].getMessageBody(); 
} 
+0

Merci beaucoup Josef. C'est ce que je cherchais. – madu

+0

BTW Josef, pourquoi avez-vous commenté getMessageBody()? Je vois dans l'API que je peux l'utiliser et cela me semble beaucoup plus simple car il renvoie une chaîne. – madu

+0

Je suis un peu confus quant au nombre de SmsMessages qu'il y aura dans un seul SMS. Parce que je veux utiliser getOriginatingAddress(), et comment je peux appeler cette fonction quand j'ai plus d'un objet SmsMessage. Je vous remercie. – madu

2

Notez que la longueur de chaque SMS dans une partie à plusieurs (concaténer) SMS ne sont pas 160 caractères, parce que chacun d'entre eux commence avec un en-tête de données, donc 160 caractères ne sont pas la taille réelle de chaque SMS, c'est la longueur des caractères à partir de laquelle le message est concaténé. De plus, cette limite dépend du codage du message.

Pour plus d'informations, voir [link text] [1]. Cela devrait être un commentaire et non une réponse, mais au moment de l'écriture, ma réputation ne me permet pas de laisser des commentaires.

[1]: http://en.wikipedia.org/wiki/SMS#Message_size taille du message

+0

Merci pour ces applications. Cela l'a expliqué. – madu