如何实现将SMS发送到端口50000时调用的MIDlet?
代码无效.手机上无法接收短信,短信通过模拟器(JAVA Me SDK)发送.
接收短信应该采取什么设置?
我的代码:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import java.io.IOException;
import javax.microedition.io.PushRegistry;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
/**
* @author bonni
*/
public class Midletsms extends MIDlet implements CommandListener{
protected Display display;
//boolean started=false;
Form form = new Form("Welcome");
Command mCommandQuit;
public void startApp() {
String url = "sms://:50000";
try {
PushRegistry.registerConnection(url,this.getClass().getName(), "*");
// PushRegistry.registerConnection(url,"Midletsms.class", "*");
} catch (IOException ex) {
} catch (ClassNotFoundException ex) {
}
form.append("This midlet gets invoked when message is sent to port:50000");
display = Display.getDisplay(this);
display.setCurrent(form);
mCommandQuit = new Command("Quit", Command.EXIT, 0);
form.addCommand(mCommandQuit);
form.setCommandListener(this);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable d) {
// throw new UnsupportedOperationException("Not supported yet.");
String label = c.getLabel();
if(label.equals("Quit"))
{
destroyApp(false);
notifyDestroyed();
}
}
}
最佳答案 不确定我完全理解这个问题.但是你需要阅读约
PushRegistry.
因此有两种类型的推送注册,静态和动态.
您提供的代码示例使用动态注册.您需要至少手动调用此MIDlet一次,以便进行推送注册. (旁白:在您的示例中,您在startApp方法中执行此操作,这是一个非常糟糕的主意!推送注册是一种潜在的阻塞操作,因此不应该在生命周期方法(如startApp)中完成.您应该在新线程).
另一种方法是静态注册,其中包含jad中的推送信息.安装MIDlet时将注册推送端口,而无需运行它.
最后,你说
sms is sent through the emulator
这是什么意思?为了启动应用程序,您需要从另一个MIDlet发送相关端口号的SMS(如果需要,可以在同一个手机上).