java-me – 如何实现在将SMS发送到端口50000时调用的MIDlet …代码无效

如何实现将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(如果需要,可以在同一个手机上).

点赞