J2ME SMS PUSH 短消息推送

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

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

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


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


J2ME SMS PUSH 短消息推送_第1张图片
2.创建工程

J2ME SMS PUSH 短消息推送_第2张图片

3.设置属性Settings


J2ME SMS PUSH 短消息推送_第3张图片

J2ME SMS PUSH 短消息推送_第4张图片

J2ME SMS PUSH 短消息推送_第5张图片J2ME SMS PUSH 短消息推送_第6张图片

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


J2ME SMS PUSH 短消息推送_第7张图片

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


J2ME SMS PUSH 短消息推送_第8张图片

J2ME SMS PUSH 短消息推送_第9张图片J2ME SMS PUSH 短消息推送_第10张图片J2ME SMS PUSH 短消息推送_第11张图片J2ME SMS PUSH 短消息推送_第12张图片J2ME SMS PUSH 短消息推送_第13张图片

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


J2ME SMS PUSH 短消息推送_第14张图片J2ME SMS PUSH 短消息推送_第15张图片J2ME SMS PUSH 短消息推送_第16张图片J2ME SMS PUSH 短消息推送_第17张图片J2ME SMS PUSH 短消息推送_第18张图片

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

你可能感兴趣的:(String,command,null,手机,sms,j2me)