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



2.创建工程


3.设置属性Settings




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



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




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



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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值