MIDlet可以訪問兩種運行時的屬性值:系統和應用程序的。
系統屬性的概念是在CLDC(Connected Limited Device Configuration)中定義的,屬性值被寫入底層的系統,我們可以讀取它們但是不能修改這些屬性值。如果你想讀取一個系統屬性值那麼你可以使用System類的靜態方法System.getProperty()來讀取。經常有網友會詢問如何讀取手機號碼或者IMEI號碼,其實這些你應該參考具體機型的開發文檔。各個廠商的實現都是不一樣的。為了讓大家查找方便這裡列出在J2ME中定義的系統屬性值,如果你的手機支持相關的JSR,那麼就可以通過上述方法取得屬性值。
應用程序屬性值是在應用程序描述符文件或者MANIFEST文件中定義的(其中MANIFEST文件是打包在jar文件中的),當我們部署應用程序的時候會定義應用程序屬性。比如下面是一個典型的jad文件內容:
MIDlet-1: HttpWrapperMidlet,,httpwrapper.HttpWrapperMIDlet
MIDlet-Jar-Size: 16315
MIDlet-Jar-URL: HttpWrapper.jar
MIDlet-Name: HttpWrapper
MIDlet-Vendor: Vendor
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0
Which-Locale: en
其中Which-Locale就是應用程序屬性值,我們可以通過MIDlet的成員方法getAppProperty()來得到它,代碼片斷如下:
import Javax.microedition.midlet.*; public class MyMIDlet extends MIDlet { private String suiteName; public MyMIDlet(){ suiteName = getAppProperty( "MIDlet-Name" ); ... // more stuff } ... // etc. }
屬性值是大小寫敏感的,如果屬性值在系統,jad文件和manifest文件中都沒有定義的話,那麼將返回null。如果在jad文件和manifest文件中定義了同樣的屬性值,那麼會出現如下兩種情況:如果應用程序是MIDP2.0種的信任應用程序,那麼AMS將會拒絕安裝。否則在jad文件中的屬性值會覆蓋manifest中的值。
在jad文件中使用屬性值有一定的好處,如果你需要更改一些數據而又不想重新編譯代碼、打包的話,那麼你可以在jad中定義一些屬性值。這樣可以配置你的應用程序,想想是不是和你在J2SE應用中使用屬性文件類似。但是不要在jad文將中定義大量的數據,因為很多設備都是對jad文件的大小有限制的。