📄 mimereceiver.java
字号:
/*///////////////////////////////////////////////////////////////////////////////
//MIMESMSnotifyPushRegistry文档生成日期:2005.11.3
//
//(1)概述:
//类名称:MIMEReceiver
//类说明:
// 提供主界面
//所在子系统:MIMESMSnotifyPushRegistry
//
//系统总描述:
本工程发送一个MIME头的短信给目标手机。MIME头中指明了对方应该如何处理。
对方手机收到后,触发注册了PushRegistry的MIDlet应用,并解析短信,
按照指明的命令操作。
子系统描述:
注册Push Registry,监听sms://:8341,当然端口可以修改的。
这样,收到带有MIME头的短信后,解析并按照命令行事.
//(2)历史记录:
//创建人: 郑昀(2005.11.3)
//联系我: Google Talk >> zhengyun@gmail.com
//Blogs: http://blog.csdn.net/zhengyun_ustc/以及http://www.cnblogs.com/zhengyun_ustc
//(3)版权声明:
//我这个版本的MIMESMSnotifyPushRegistry,
//j2me客户端代码仅仅允许您借鉴,但不得用于商业用途,除非得到郑昀本人的授权。本人保留所有权利。
////////////////////////////////////////////////////////////////////*/
package com.ultrapower.midlet;
import java.util.Vector;
import javax.microedition.io.PushRegistry;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.wireless.messaging.MessageConnection;
import com.ultrapower.control.GUIController;
import com.ultrapower.model.ThreadMMSHandler;
/**********************************************************
//MIMEReceiver
//
//Class Description:
// 实际上应该算作MVC中的View部分,是MIDlet的主界面。
//Author:
// zhengyun@ultrapower 2005.11.3
//
**********************************************************/
public class MIMEReceiver extends MIDlet {
private Display display;
public static GUIController controller;
/*
* 用这个标志表明当前MIDlet是否已经启动了
*/
private boolean m_bAppInit = false;
/*
* 存储处理连接的threads句柄
*/
private Vector connectionHandlers = new Vector();
/**
* default constructor
*/
public MIMEReceiver() {
super();
display = Display.getDisplay(this);
}
/* (non-Javadoc)
* @see javax.microedition.midlet.MIDlet#startApp()
*/
protected void startApp()
throws MIDletStateChangeException{
/*
* 为了以防万一,一旦初始化的时候PushRegistry.listConnections出错,
* 怀疑可能是用户手机不支持MIDP2.0。那么必须将这个情况通告用户。
*/
boolean bSomthingWrongWhenOushRegistryListConnections = false;
String sErrorDescription = "";
/*
* 如果找到了连接,则通知控制器要显示“显示短信”界面;
* 否则,控制器将直接显示主界面
*/
boolean bThereAreConnections = false;
/*
* MIDlet一启动,首先要判断当前MIDlet是否本来就是处于激活状态
*/
if (!m_bAppInit)
{
// 启动了就把这个标志设置为true
m_bAppInit = true;
try
{
String[] conns =
PushRegistry.listConnections(false);
System.out.println("Found " + conns.length +
" connections.");
for(int ccnt=0; ccnt < conns.length; ccnt++){
bThereAreConnections = true;
ThreadMMSHandler handler =
new ThreadMMSHandler(conns [ccnt], this);
connectionHandlers.addElement(handler);
handler.start();
}
}
catch(IllegalArgumentException iae)
{
bSomthingWrongWhenOushRegistryListConnections = true;
iae.printStackTrace();
sErrorDescription = "不被是认为合法的连接语法!"
+ iae.getMessage() +
"/" + iae.getClass();
}
catch(SecurityException se)
{
bSomthingWrongWhenOushRegistryListConnections = true;
se.printStackTrace();
sErrorDescription = "可能没有权限注册!"
+ se.getMessage() +
"/" + se.getClass();
}
catch(Exception exc)
{
bSomthingWrongWhenOushRegistryListConnections = true;
exc.printStackTrace();
sErrorDescription = exc.getMessage() +
"/" + exc.getClass();
}
}
controller = new GUIController(this);
try
{
controller.init(bThereAreConnections);//初始化RMS,Menu,Forms
}
catch(Exception exc)
{
setCurrent(
new Alert(
"初始化错误",
"错误原因为:"
+ exc.getMessage() + "/" + exc.getClass(),
null, AlertType.ERROR));
}
// 初始化了控制器之后,就来看前面是否有错
if(bSomthingWrongWhenOushRegistryListConnections == true)
{
// 设置当前出错信息
controller.setListConnectionsException(sErrorDescription);
////////////////////////////////////////////
// 告诉控制器,出错了
controller.handleEvent(GUIController.EventID.EVENT_LISTCONNECTIONS_ERR,
null);
////////////////////////////////////////////
}
}
/* (non-Javadoc)
* @see javax.microedition.midlet.MIDlet#pauseApp()
*/
protected void pauseApp() {
this.notifyPaused();
}
/* (non-Javadoc)
* @see javax.microedition.midlet.MIDlet#destroyApp(boolean)
*/
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
controller = null;
/*
* 务必清除消息连接
*/
if (connectionHandlers != null) {
while (connectionHandlers.isEmpty() == false) {
ThreadMMSHandler tmh = (ThreadMMSHandler) connectionHandlers.firstElement();
if (tmh != null) {
try {
tmh = null;
}
catch (Exception exp) {}
}
connectionHandlers.removeElementAt(0);
}
}
}
/**********************************************************
// MIMEReceiver::setCurrent()
//
// Description:
// 设置当前显示的界面
//
// Parameters:
// Return Values:
// Author:
// zhengyun@ultrapower 2005.11.3
//
**********************************************************/
public void setCurrent(Displayable disp){
display.setCurrent(disp);
}
public void setCurrent(Alert alert, Displayable disp){
display.setCurrent(alert, disp);
}
public Displayable getCurrent(){
return display.getCurrent();
}
/**********************************************************
// MIMEReceiver::getCurrentDisplay()
//
// Description:
// 获取当前的Display,这样可以让其他类能够控制要显示什么
//
// Parameters:
// Return Values:
// Author:
// zhengyun@ultrapower 2005.11.3
//
**********************************************************/
public Display getCurrentDisplay(){
return display;
}
public void exit(boolean arg0){
try{
destroyApp(arg0);
notifyDestroyed();
}catch(MIDletStateChangeException e){
//
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -