Je vous concède que le titre est quelque peu démesuré, mais il a le mérite d’être explicite. Lorsque l’on développe une application mobile, il se peut que l’on ai besoin d’envoyer un ou plusieurs SMS/MMS.
Deux alternatives peuvent alors être envisagées :
- Coder son propre client SMS/MMS : ce qui est long et fastidieux à coder, mais a pour avantage de garder la maitrise sur la composition du message. A ne réserver que si le contenu du message a un quelconque intérêt pour votre application.
- Invoquer le client natif du mobile : très simple à coder puisqu’il ne vous faudra qu’une seule ligne. En contrepartie, vous n’aurez aucune indication sur ce que l’utilisateur a bien pu écrire, ni même savoir si un message a été envoyé.
Vous vous doutez bien que je vais me limiter ici à l’explication de la deuxième alternative. Dans la pratique, pour invoquer le client SMS la ligne suivante suffit :
this.midlet.platformRequest("smsto:+33612345678");
Le code parle de lui-même, on passe le numéro de téléphone préfixé de la chaine smsto:.
Encore plus fort, il est possible de passer du contenu en paramètre, comme le corps du message :
this.midlet.platformRequest("smsto:+33612345678?body=Subscribe");
De la même façon pour le MMS :
this.midlet.platformRequest("mmsto:+33612345678");
Voila, c’est aussi simple que cela. Par contre, je n’ai pu tester ce code que sur les mobiles Sony-Ericsson (qui plus est JP8), et je ne connais donc pas sa portabilité chez les autres constructeurs. Avez-vous plus d’info ?





Et pour téléphoner c’est bien “tel: xxx” ?
Tout à fait. Mais comme ce cas est détaillé dans la norme MIDP je n’en ai pas parlé. Les autres préfixe (tel que “smsto” et “mmsto” ) sont à l’appréciation du constructeur (du moins le développeur de la JVM). Le fait que l’on peut invoquer les clients de messagerie est décrit dans les documents de Sony-Ericsson concernant le browser.