NOTA! Questo sito utilizza i cookie e tecnologie simili.

Se non si modificano le impostazioni del browser, l'utente accetta. Per saperne di piu'

Approvo

Capitolo 49: WMA (Wireless Messaging API) e gli SMS: invio e ricezione.

 

Le WMA (Wireless Messaging API) consentono di sviluppare applicazioni J2ME in grado di inviare e ricevere SMS.

 

Per sviluppare MIDlet con tali capacità, ricordiamoci di impostare il supporto alle WMA, possibilmente per la versione 2.0 (JSR 205, in grado di gestire anche gli MMS), nella scheda "API Selection" del pannello Setting nel WTK.

 

 

INVIO DI UN SMS

Per inviare un SMS è necessario instaurare una connessione simile in tutto e per tutto alle altre connessioni create mediante il GCF; in questo particolare caso, creeremo una MessageConnection con protocollo "sms":

MessageConnection connessione = (MessageConnection) Connector.open("sms://0000000000"); .

La MessageConnection creata con la riga di codice precedente permette di inviare un SMS al numero 0000000000.

 

Per effettuare l'invio vero e proprio del messaggio, conviene utilizzare una classe che estenda Thread, per evitare di bloccare la MIDlet in attesa che l'operazione di invio termini; sarà sufficiente scrivere:

ClasseDiInvio classeDiInvio = new ClasseDiInvio();

Thread th = new Thread(classeDiInvio);

th.start();

per effettuare questa operazione.

 

All'interno della classe ClasseDiInvio, quindi, dovremo creare una connessione MessageConnection, creare un oggetto TextMessage, impostare il corpo del messaggio (con setPayloadTex(String s)) ed inviare il messaggio:

connessione = (MessageConnection) Connector.open("sms://0000000000");

TextMessage messaggio = (TextMessage) connessione.newMessage(MessageConnection.TEXT_MESSAGE);

messaggio.setPayloadText("Mio messaggio di prova");

connessione.send(messaggio); .

 

Come corpo del messaggio, possiamo inserire ed inviare anche dati binari: in questo caso, faremo uso di un oggetto BinaryMessage al posto di un TextMessage, come mostrato nella porzione di codice riportata qui di seguito

BinaryMessage messaggioBinario = (BinaryMessage) connessione.newMessage(MessageConnection.BINARY_MESSAGE);

messaggioBinario.setAddress("sms://0000000000:7500");

messaggioBinario.setPayloadData(messaggio);

connessione.send(messaggioBinario); .

Come avrete notato, al protocollo e al numero di telefono del destinatario, in setAddress, è stato aggiunto, in queso caso, il numero di porta adibita alla ricezione degli SMS, nel nostro cas la 7500.

 

 

RICEZIONE DI UN SMS

Per ricevere un SMS è necessario creare un MessageConnection che apra una connessione con protocollo"sms", solo che questa volta non passeremo alcun numero di telefono ma direttamente il numero della porta adibita alla ricezione degli SMS (nel nostro caso, la 7500):

MessageConnection connessione = (MessageConnection) Connector.open("sms://:7500"); .

 

Dopo aver creato la connessione, si potrà gestire la ricezione asincrona (per non bloccare la MIDlet, nell'attesa) estendendo l'interfaccia MessageListener.

Dovremo quindi impostare una classe che implementi tale interfaccia come listener dei messaggi ed impostarla come listener per la connessione, cosa che può essere fatta con il metodo:

setMessageListener(MessageListener mL);

di MessageConnection.

 

Tale interfaccia ci obbliga ad implementare il metodo:

notifyIncomingMessage(MessageConnection conn)   :   void;

che viene invocato alla ricezione di un messaggio.

 

Al momento di terminare la MIDlet ricordiamoci, in destroyApp(boolean b), di liberare il listener e chiudere la MessageConnection.

 

 
Vai all'inizio della pagina