Este permite enviar um SMS para o número desejado. Pode ser útil para alguma aplicação. Além de ser muito interessante descobrir como fazer estas coisas.
A primeira parte só cria o form que vai ser utilizado para receber o número e o texto da mensagem. Os demais métodos são operações para o envio da mensagem. O código é simples e não é complicado de entender. Qualquer coisa é só deixar um comentário!
import java.io.IOException;
import java.io.InterruptedIOException;
import javax.microedition.io.Connector;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.TextMessage;
public class SMSMIDlet extends MIDlet implements CommandListener {
private Command enviar;
private Command sair;
private Form form;
private TextField tfNumero;
private TextField tfTexto;
private MessageConnection connection;
public SMSMIDlet() {
//"desenha" o form, inserindo seus componentes
form = new Form("Examplo de envio de SMS");
tfNumero = new TextField("Numero:", null, 20,
TextField.PHONENUMBER);
form.append(tfNumero);
tfTexto = new TextField("Texto:", null, 160, TextField.PLAIN);
form.append(tfTexto);
enviar = new Command("Enviar", Command.ITEM, 0);
form.addCommand(enviar);
sair = new Command("Sair", Command.EXIT, 0);
form.addCommand(sair);
form.setCommandListener(this);
}
public void startApp() {
Display.getDisplay(this).setCurrent(form);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
if (connection != null) {
try {
connection.close();
} catch (IOException ex) {
}
}
}
public void commandAction(Command command, Displayable displayable) {
if (command == sair) {
destroyApp(true);
notifyDestroyed();
} else if (command == enviar) {
enviarMensagem();
}
}
private void enviarMensagem() {
try {
connection = (MessageConnection)Connector.open("sms://:5000");
} catch (IOException ex) {
}
TextMessage mensagem = prepararSMS();
enviarSMS(mensagem);
}
private TextMessage prepararSMS() {
TextMessage mensagem = (TextMessage)connection.newMessage(
MessageConnection.TEXT_MESSAGE);
String number = "sms://" + tfNumero.getString();
mensagem.setAddress(number);
String texto = tfTexto.getString();
mensagem.setPayloadText(texto);
return mensagem;
}
private void enviarSMS(final TextMessage message) {
Thread smsThread = new Thread() {
public void run() {
try {
connection.send(message);
form.append("Mensagem enviada");
} catch (InterruptedIOException ex) {
} catch (IOException ex) {
} catch (IllegalArgumentException ex) {
} catch (SecurityException ex) {
}
}
};
smsThread.start();
}
}