通常MIDP的應用程序是以.jar文件和.jad文件發布的。jar文件就是我們所說的jar包,jad文件的全名是java application descriptor。在jad文件中包含著Application Management Software用來管理MIDlets的生命周期的信息,當然也包括很多重要的屬性。他們是成對出現的例如:MIDlet-Name:myjava。你可以通過調用getApp 在jar包里面包括一個目錄META-INFO里面有個文件是MANIFEST.MF。它是用來描述JAR文件的,也包含一些其它的信息,你可能發現了,在MANIFEST.MF和JAD文件中的一些值是相同的。那么這就存在著一個規則,AMS如何決定去讀取哪個值呢?答案是這樣的。 下面這個邏輯看上去是比較清楚的: if trusted if ( v0 != null && v1 != null ) value = ( v1 != null )? v1 : v0; if value == null return value 下面簡單介紹一下MIDP2.0中定義的一些重要的參數,在MIDP2.0中定義了18個值。其中在MANIFEST.MF和jad中都必須定義的有六個,他們是: 關于一個MIDlet suite里面有多個MIDlet的情況我寫了個簡單的代碼測試了一下,如果還有疑問的話你可以運行一下下面的程序: private Display display; } public class MIDlet2 extends MIDlet private Display display; } protected void destroyApp(boolean arg0) throws MIDletStateChangeException } private Display display; } (出處:http://www.49028c.com)
given : String key // attribute name
return : String value
throws : NullPointerException if key is null
String v0 = lookup key in manifest
String v1 = lookup key in descriptor
// found in both; must be the same value
assert( v0.compareTo( v1 ) == 0 );
else // untrusted
value = lookup key in descriptor
value = lookup key in manifest
MIDlet-Name
MIDlet-Version
MIDlet-Vendor
MicroEdition-Profile
MicroEdition-Configuration
MIDlet-n
由于一個MIDlet suite里面可以有多個MIDlet的,因此你要說明他們比如MIDlet-1,MIDlet-2.....MIDlet-n,這一點非常的重要,在部署jar和jad文件到手機的時候一定要確保MIDlet-Name的正確,它的值是你的jar包的名字!否則不會安裝成功的。還有兩個值是jad文件中不許有的他們是MIDlet-Jar-URL ,
MIDlet-Jar-Size 其中應該注意的是MIDlet-Jar-URL,如果你要是通過OTA下載的話,那么你不許讓他指向你jar包的絕對地址,例如http://myip:port/app/myapp.jar。
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class MIDlet1 extends MIDlet
{
protected void startApp() throws MIDletStateChangeException
{
display = Display.getDisplay(this);
display.setCurrent(new Form("1"));
}
protected void pauseApp()
{
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException
{
}
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
{
protected void startApp() throws MIDletStateChangeException
{
display = Display.getDisplay(this);
display.setCurrent(new Form("2"));
}
protected void pauseApp()
{
{
}
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class MIDlet3 extends MIDlet
{
protected void startApp() throws MIDletStateChangeException
{
display = Display.getDisplay(this);
display.setCurrent(new Form("3"));
}
protected void pauseApp()
{
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException
{
}
JAD文件的內容如下:
MIDlet-3: MIDlet3,,MIDlet3
MIDlet-2: MIDlet1,,MIDlet1
MIDlet-1: MIDlet2,,MIDlet2
MIDlet-Jar-URL: MIDlets.jar
MicroEdition-Configuration: CLDC-1.0
MIDlet-Version: 1.0.0
MIDlet-Name: MIDlets
MIDlet-Vendor: Midlet Suite Vendor
MicroEdition-Profile: MIDP-1.0
把上面的三個.java文件打包成MIDlets.jar文件,然后雙擊.jad文件。程序就可以運行起來了,我在wtk2.1下運行沒有任何問題!
新聞熱點
疑難解答