📄 smsmidlet.java
字号:
import javax.microedition.midlet.*;
import javax.microedition.io.PushRegistry;
import javax.microedition.lcdui.*;
import javax.wireless.messaging.*;
import javax.microedition.io.Connector;
import java.io.IOException;
public class SMSMIDlet extends MIDlet implements CommandListener,MessageListener{
private Display display=null;
private MessageConnection receiveConn=null;
private boolean done=false;
MessageReader reader=null;
private List list=null;
private Displayable resume=null;
private SendMessageUI send=null;
public final String[] items={"发信息","收件箱"};
public final Command exitCommand=new Command("退出" ,Command.EXIT,1);
public final Command backCommand=new Command("返回",Command.BACK,2);
public void startApp() {
if (display==null){
display=Display.getDisplay(this);
list=new List("短消息中心",List.IMPLICIT,items,null);
resume=list;
list.addCommand(exitCommand);
list.setCommandListener(this);
}
String serverURL="sms://:"+this.getAppProperty("port");
initMessageServer(serverURL);
String[] url=PushRegistry.listConnections(true);
if(url!=null && url.length>0){
reader.handleMessage();
setMessageListener(receiveConn);
}else{
setMessageListener(receiveConn);
display.setCurrent(resume);
}
}
private void setMessageListener(MessageConnection mc){
try{
mc.setMessageListener(this);
}catch(Exception ex){
}
}
private void initMessageServer(String url)
{
done=false;
System.out.println(url);
try{
receiveConn=(MessageConnection)Connector.open(url);
reader=new MessageReader();
new Thread(reader).start();
}catch(IOException ex){
this.displayError(ex.toString(),list);
}
}
public void pauseApp() {
resume=display.getCurrent();
release();
}
public void destroyApp(boolean unconditional){
release();
}
private void release(){
done=true;
try{
receiveConn.setMessageListener(null);
receiveConn.close();
receiveConn=null;
}catch(IOException ex){
ex.printStackTrace();
}
}
public void setCurrent(Displayable displayable){
display.setCurrent(displayable);
}
public void displayError(String message,Displayable displayable){
Alert alert=new Alert("错误提示");
alert.setType(AlertType.ERROR);
alert.setTimeout(2000);
display.setCurrent(alert,displayable);
}
public void backToMain(){
display.setCurrent(list);
}
public void commandAction(Command cmd,Displayable displayable){
if (cmd==exitCommand){
destroyApp(false);
notifyDestroyed();
}
else if(cmd==List.SELECT_COMMAND){
String label=list.getString(list.getSelectedIndex());
if(label.equals(items[0])){
if (send==null)
send=new SendMessageUI(this);
send.clean();
display.setCurrent(send);
}else if(label.equals(items[1])){
}
}else if (cmd==backCommand){
display.setCurrent(list);
}
}
public void notifyIncomingMessage(MessageConnection messconn){
if(messconn==receiveConn){
reader.handleMessage();
}
}
class MessageReader implements Runnable{
private int pendingMessage=0;
public void run(){
while(!done){
synchronized(this){
if (pendingMessage==0){
try{
wait();
}catch(InterruptedException ex){
ex.printStackTrace();
}
}
pendingMessage--;
}
Message message=null;
try{
message=receiveConn.receive();
}catch (IOException ex){
}
if (message instanceof TextMessage){
TextMessage tm=(TextMessage)message;
String content=tm.getPayloadText();
String address=tm.getAddress();
Form form=new Form("接收到短消息");
form.append(address+"\n");
form.append(content+"\n");
form.addCommand(backCommand);
form.setCommandListener(SMSMIDlet.this);
display.setCurrent(form);
}
else if(message instanceof BinaryMessage){
}
}
}
public synchronized void handleMessage(){
pendingMessage++;
notify();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -