如何实现在将 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 时注册,无需运行它。
最后你说
这是什么意思?为了启动应用程序,您需要从另一个 MIDlet(如果需要,可以在同一手机上)在相关端口号上发送 SMS。
关于java-me - 如何实现在 SMS 发送到端口 50000 时调用的 MIDlet....代码不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12394158/