?? 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 + -