基于MIDP的应用程序MIDlet,在运行时可以访问2种属性集:系统续行和应用属性。
1.系统属性
系统属性由CLDC定义,可以由JSR扩充,只能读取不能修改。在运行时查询系统属性有2种作用:
(1)表明一个可选包的支持情况
比如,如果设备支持Location API,那么便有microedition.location.version属性,和其相关的属性值为"1.0",表明遵循JSR-179.
(2)提供平台相关的配置数据
例如,MIDP 2.0规范有microedition.commports属性,它的属性值是可以用来建立URL的逗号分隔的端口列表,GCF可以使用URL创建javax.microedition.io.CommConnection对象。
要查询系统属性使用System.getProperty(String key)方法,如下所示:
import java.lang.*;
String value;
String key = "microedition.pim.version";
value = System.getProperty( key );
...
JSR | Property Name | Default Value¹ |
---|---|---|
30 | microedition.platform | null |
microedition.encoding | ISO8859_1 | |
microedition.configuration | CLDC-1.0 | |
microedition.profiles | null | |
37 | microedition.locale | null |
microedition.profiles | MIDP-1.0 | |
75 | microedition.io.file.FileConnection.version | 1.0 |
file.separator | (impl-dep) | |
microedition.pim.version | 1.0 | |
118 | microedition.locale | null |
microedition.profiles | MIDP-2.0 | |
microedition.commports | (impl-dep) | |
microedition.hostname | (impl-dep) | |
120 | wireless.messaging.sms.smsc | (impl-dep) |
139 | microedition.platform | (impl-dep) |
microedition.encoding | ISO8859-1 | |
microedition.configuration | CLDC-1.1 | |
microedition.profiles | (impl-dep) | |
177 | microedition.smartcardslots | (impl-dep) |
179 | microedition.location.version | 1.0 |
180 | microedition.sip.version | 1.0 |
184 | microedition.m3g.version | 1.0 |
185 | microedition.jtwi.version | 1.0 |
195 | microedition.locale | (impl-dep) |
microedition.profiles | IMP-1.0 | |
205 | wireless.messaging.sms.smsc | (impl-dep) |
205 | wireless.messaging.mms.mmsc | (impl-dep) |
211 | CHAPI-Version | 1.0 |
¹(impl-dep) indicates that the default value is implementation-dependent.
2. 应用程序属性
应用程序属性可以从应用程序描述符JAD以及MIDlet套件的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
(1)MIDlet-Name、MIDlet-Version、MIDlet-Vendor是清单文件必须提供的属性:
MIDlet-Name:MIDlet Suite的名称
MIDlet-Version:MIDlet Suite的版本号码,其格式为:主版本.次版本.微版本。版本号码可以让应用软件程序管理器知道是否该安装(版本比已安装的还旧),或者是否该更新。
MIDlet-Vendor:提供次MIDlet Suite的厂商名称。
(2)MIDlet-Name、MIDlet-Version、MIDlet-Vendor、MIDlet-Jar-URL、MIDlet-Jar-Size是JAD文件必须提供的属性。
MIDlet-Jar-URL:应用程序管理器要下载代表MIDlet Suite的JAR文件时所应该去的URL地址。可以使用相对地址也可以使用绝对地址。
MIDlet-Jar-Size:代表此MIDlet Suite的JAR文件的大小(以BYTE为单位)。
(3)MIDlet-<n>、MicroEdition-Profile、MicroEdition-Configuration是清单文件或JAD必须提供的属性(也就是说清单文件manifest.mf和JAD文件必须有一个必须提供这3个属性)
MIDlet-<n>:用来描述MIDlet Suite之中MIDlet的信息。n取值从1开始,第一个MIDlet就以MIDlet-1代表(最小从1开始),第二个MIDlet就以MIDlet-2代表,依次类推。套件中有几个MIDlet就应该有几个MIDlet-<n>属性,属性值格式为:程序名, 图标文件名, 类名称(包括包名)
MicroEditon-Profile:执行此MIDlet Suite所需的profile名称及版本。格式如:MIDP-2.0。
MicroEditon-Configuration:执行此MIDlet Suite所需的configuration名称和版本。格式如:CLDC-1.1。
(4)还有一些可选(也可能很重要)的属性,如下所示:
MIDlet-Icon:代表此MIDlet Suite 的图标文件文件名。此图标文件为一个位于JAR文件中的PNG格式图象文件。注意,文件名的大小写有区别。
MIDlet-Description:描述此MIDlet Suite的相关信息。
MIDlet-Info-URL:描述此MIDlet Suite更多相关信息的URL地址。这个属性通常可以让用户在下载MIDlet Suite之前通过此URL查看更多资料,或者也可以和MIDlet类中的platformRequest()方法配合使用。
MIDlet-Data-Size:此MIDlet Suite所需的持久化数据存储所需的存储区的大小。此属性值默认为0。而且所能配置的额外存储区大小常常会根据实体机器的不同而不同。
MIDlet-Delete-Confirm:删除此MIDlet Suite之前,应用程序管理器必须显示出给用户的确认文字。
MIDlet-Install-Notify:应用程序管理器安装此MIDlet Suite之后,用来报告安装结果的URL。
MIDlet-Delete-Notify:应用程序管理器删除此MIDlet Suite之后,用来报告删除结果的URL。
MIDlet-Permissions: 执行此MIDlet的主要权限
MIDlet-Permissions-Opt: 执行此MIDlet的次要权限
MIDlet-Push-<n>: 进行静态注册,格式:<连接URL>,<MIDletClassName>,<过滤器(可以使用通配符)>
(5)自定义属性,不要以MIDlet或MicroEdition开头。
可以通过在MIDlet中调用getAppProperty(String key)方法,来读取描述符中的应用属性,比如"Which-Locale"。下面的示例代码通过查询"MIDlet-Name"属性获取MIDlet套件的名字:
import javax.microedition.midlet.*;
public class MyMIDlet extends MIDlet {
private String suiteName;
public MyMIDlet(){
suiteName = getAppProperty( "MIDlet-Name" );
... // more stuff
}
... // etc.
}
属性名是大小写敏感的。如果一个属性既没有被描述文件定义也没有被清单文件定义,则返回null。如果描述文件和清单文件中相同属性的定义不同,可以通过下面2种方式中的一种来解决冲突:如果程序是基于MIDP 2.0的可信任的程序,系统将不会安装此程序。否则的话,描述文件中的属性值将覆盖清单文件中的属性值。对于可信任的MIDP 2.0程序,JAD文件和manifest.mf文件中相同属性的定义必须相同。
当描述符动态生成时应用程序属性是非常有用的。例如,你也以在描述符中嵌入注册码,程序在第一次运行时可以读取注册码并回传给注册服务器,没有必要重新编译或重新打包应用程序。但是不要在描述符中填充大量数据,因为有些平台限制JAD文件的大小(比如5K)。