发短消息
package com.zeph.s40.sms;
import java.io.IOException;
import javax.microedition.io.Connector;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
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.microedition.midlet.MIDletStateChangeException;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.TextMessage;
public class S40MIDletSMS extends MIDlet implements CommandListener {
private Display display = null;
private Form mainForm = null;
private TextField phonenumTextField = null;
private TextField portnumTextField = null;
private TextField messageTextField = null;
private Command exitCommand = null;
private Command sendSmsCommand = null;
public S40MIDletSMS() {
// TODO Auto-generated constructor stub
display = Display.getDisplay(this);
mainForm = new Form("SMS");
phonenumTextField = new TextField("PHONE NUM", "", 15,TextField.NUMERIC);
portnumTextField = new TextField("PORT NUM", "", 10, TextField.NUMERIC);
messageTextField = new TextField("MESSAGE", "Input Your Message Here",100, TextField.ANY);
exitCommand = new Command("EXIT", Command.BACK, 1);
sendSmsCommand = new Command("SEND", Command.OK, 1);
mainForm.addCommand(sendSmsCommand);
mainForm.addCommand(exitCommand);
mainForm.append(phonenumTextField);
mainForm.append(portnumTextField);
mainForm.append(messageTextField);
mainForm.setCommandListener(this);
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
protected void pauseApp() {
// TODO Auto-generated method stub
}
protected void startApp() throws MIDletStateChangeException {
// TODO Auto-generated method stub
display.setCurrent(mainForm);
}
public void commandAction(Command command, Displayable displayable) {
// TODO Auto-generated method stub
if (command == sendSmsCommand) {
send();
} else if (command == exitCommand) {
try {
destroyApp(true);
notifyDestroyed();
} catch (MIDletStateChangeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
private void send() {
MessageConnection mc = null;
String number = phonenumTextField.getString();
String port = portnumTextField.getString();
String content = messageTextField.getString();
String address;
if (number.equals("")) {
Alert alert = new Alert("ERROR", "Input a right number!", null,AlertType.ERROR);
alert.setTimeout(3000);
display.setCurrent(alert, mainForm);
return;
} else if (port.equals("")) {
address = "sms://+" + number;
} else {
address = "sms://+" + number + ":" + port;
}
try {
mc = (MessageConnection) Connector.open(address);
TextMessage msg = (TextMessage) mc.newMessage(MessageConnection.TEXT_MESSAGE);
msg.setPayloadText(content.toString());
mc.send(msg);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (mc != null) {
mc.close();
mc = null;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
收消息
package com.zeph.s40.sms;
import java.io.IOException;
import java.io.InterruptedIOException;
import javax.microedition.io.Connector;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
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.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.wireless.messaging.Message;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.MessageListener;
import javax.wireless.messaging.TextMessage;
public class S40MIDletSMS2 extends MIDlet implements CommandListener,
MessageListener {
private Display display = null;
private MessageConnection mc = null;
private Form form = null;
private Command exitCommand = null;
private Command readCommand = null;
private Command backCommand = null;
public S40MIDletSMS2() {
display = Display.getDisplay(this);
form = new Form("RECEIVING MSG");
exitCommand = new Command("EXIT", Command.EXIT, 1);
readCommand = new Command("Read", Command.SCREEN, 1);
backCommand = new Command("BACK", Command.SCREEN, 2);
form.append("SMS...");
form.addCommand(exitCommand);
form.addCommand(readCommand);
form.addCommand(backCommand);
form.setCommandListener(this);
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub
closeConn();
}
protected void pauseApp() {
// TODO Auto-generated method stub
closeConn();
}
protected void startApp() throws MIDletStateChangeException {
// TODO Auto-generated method stub
display.setCurrent(form);
setListener();
}
private void closeConn() {
if (mc != null) {
try {
mc.setMessageListener(null);
mc.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
private void setListener() {
try {
mc = (MessageConnection) Connector.open("sms://:5055");
mc.setMessageListener(this);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void readNewMessage() {
new Thread() {
public void run() {
Message msg = null;
try {
msg = mc.receive();
} catch (InterruptedIOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if ((msg != null) && (msg instanceof TextMessage)) {
TextMessage msgContent = (TextMessage) msg;
form.append("Address:" + msgContent.getAddress().toString()
+ "\n");
form.append("Time:" + msgContent.getTimestamp().toString()
+ "\n");
form.append("Content:" + msgContent.getPayloadText());
}
display.setCurrent(form);
}
}.start();
}
public void commandAction(Command command, Displayable displayable) {
// TODO Auto-generated method stub
if (command == readCommand) {
readNewMessage();
} else if (command == backCommand) {
display.setCurrent(form);
} else if (command == exitCommand) {
notifyDestroyed();
}
}
public void notifyIncomingMessage(MessageConnection mc) {
// TODO Auto-generated method stub
if (this.mc == mc) {
Alert alert = new Alert("New Message", "Do you want read this message?", null,
AlertType.CONFIRMATION);
alert.setTimeout(Alert.FOREVER);
alert.addCommand(readCommand);
alert.addCommand(backCommand);
alert.setCommandListener(this);
display.setCurrent(alert, form);
}
}
}