⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mimereceiver.java

📁 J2ME程序实现开机自启动的简单例子源码。
💻 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 + -