J2ME SMS PUSH 短消息推送

来源:互联网 发布:公务员面试 知乎 编辑:程序博客网 时间:2024/05/24 03:12

短消息推送的目的是为了实现手机软件监听手机的某个端口,但是又不希望手机软件一直开启。实现消息推送之后。

当一条发送到固定端口的短消息发送到手机时,软件就能够监听到这条消息,然后自动开启软件,且可以获取到消息中的内容。

代码比较简单,关键是设置描述器中的属性。


SmsPushMIDlet.java

import java.io.IOException;import java.io.InterruptedIOException;import javax.microedition.io.Connector;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 SmsPushMIDlet extends MIDlet implements MessageListener,CommandListener {private Display display;private Form form;private Command exitCommand;private MessageConnection mc;private String smsPort;public SmsPushMIDlet() {display = Display.getDisplay(this);form = new Form("消息推送机制");exitCommand = new Command("退出", Command.EXIT, 0);smsPort = getAppProperty("SMS-Port");String smsConnection = "sms://:" + smsPort;if (mc == null) {try {mc = (MessageConnection) Connector.open(smsConnection);mc.setMessageListener(this);} catch (IOException ioe) {ioe.printStackTrace();}}form.addCommand(exitCommand);form.setCommandListener(this);}protected void destroyApp(boolean arg0) throws MIDletStateChangeException {if (mc != null) {try {mc.close();} catch (IOException e) {e.printStackTrace();}}}protected void pauseApp() {if (mc != null) {try {mc.close();} catch (IOException e) {e.printStackTrace();}}}protected void startApp() throws MIDletStateChangeException {display.setCurrent(form);}public void notifyIncomingMessage(MessageConnection messageConnection) {mc = messageConnection;new Thread() {public void run() {Message message = null;try {message = mc.receive();if (message != null && message instanceof TextMessage) {TextMessage receivedMessage = (TextMessage) message;String messageContent = receivedMessage.getPayloadText();form.append("推送内容:" + messageContent);}} catch (InterruptedIOException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}.start();}public void commandAction(Command c, Displayable d) {if (c == exitCommand) {notifyDestroyed();}}}
下面就是通过WTK工具实现短消息推送的模拟过程。

1.开启WTK



2.创建工程


3.设置属性Settings




4.将你在Eclipse中编写的代码拷贝到工程目录的src下面



5.使用Project目录下面的Run via OTA方式运行软件,它是一种模拟安装的过程运行软件




6.调用File下面的Utilities的WMA,发送短消息



最后你就可以当看到手机模拟器收到消息,点击确认之后进入你的软件,并读取到里面的内容