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();
}
}
14 comentários:
Olá, estou desenvolvendo uma aplicação e utilizei este código fonte para exemplo.
Estou com o seguinte problema: em celulares nokia as mensagens enviadas com esta aplicação não abrem, aparece um erro dizendo que é impossível abrir a mensagem pois o formato é inválido, apenas ficando visível em miniatura na caixa de entrada, porém em celulares sony ericsson e gradiente as mensagens abrem normalmente.
Alguém tem idéia do que pode estar acontecendo?
Obrigado!
Olá Thiago! Sinceramente não sei o porque, mas vamos procurar saber. Testamos em um Nokia 5320 e funcionou perfeitamente.
Assim que tiver novidades sobre o problema comento aqui novamente.
Olá, fiz mais alguns testes e percebi que o problema está acontecendo apenas quando utilizo a aplicação em um motorola i290 e também percebi que o problema ocorre apenas quando a mensagem é enviada pela aplicação j2me, quando é enviada normal, sem ser pela aplicação a mensagem chega e abre normalmente nos celulares Nokia.
Já pesquisei bastante tentando achar uma solução mas ainda não consegui, se alguém conseguir me ajudar ficarei muito grato.
Obrigado!
O problema acima foi resolvido usando MessagePart para enviar as SMS caso alguém venha a ter o mesmo problema. ;)
Obrigado pela orientação Thiago! ;)
Para um inexperiente como eu, em JavaMovel esse codigo so deu copiar e colar ja vai "funcinar" no meu NetBeans???
Sei que pra jogar pro celular tem que gerar o Jar.
Victor Hugo, basta criar uma midlet e colar este código. Quando fazer a compilação a IDE criará o arquivo .jar para ser colocado no celular.
Lembre-se que para enviar mensagens SMS você precisa dos serviços da operadora, portando não é possível enviar mensagens através do emulador.
Tenho um motocubo e testei o aplicativo enviando mensagem para eu próprio, pode ser loucura hehehe. Não chegou nenhuma mensagem. Eu preciso alterar alguma coisa no código para q as mensagens sejam enviadas pela minha operadora, TIM, sem problemas?
Bruno, nós testamos em um aparelho nokia 5220 com a operadora TIM e funcionou sem problemas. Fica complicado descobrir o porque não funcionou no seu aparelho. Dê uma testada em outros códigos por ai e faça uma comparação. Boa sorte..
Bom dia a todos, estou começando em J2ME e estou com algumas dúvidas sobre esse script.
1 - É necessario estar conectado a internet para poder enviar o sms?
2 - Qual o formato que tem que colocar o numero para envio(081-9999-9999)?
Pessoal, já consegui resolver. O cel estava sem crédito.
:D
Eu estou com o mesmo problema para envio de sms's, As mensagem não são abertas no meu Sony X1, que roda WM6. Como posso resolver utilizando MessagePart ?
Gostaria de retirar os avisos de seguraça é possível?
esse programa roda de JavaSE para ME ? ou é de ME para ME ?
Postar um comentário