midlet是在midp中提出的一种应用程序模型,目前在j2me中应用最为广泛。本文将主要介绍midp应用程序的属性问题。读者可以参考midp application properties
midlet可以访问两种运行时的属性值:系统和应用程序的。
系统属性的概念是在cldc(connected limited device configuration)中定义的,属性值被写入底层的系统,我们可以读取它们但是不能修改这些属性值。如果你想读取一个系统属性值那么你可以使用system类的静态方法system.getproperty()来读取。经常有网友会询问如何读取手机号码或者imei号码,其实这些你应该参考具体机型的开发文档。各个厂商的实现都是不一样的。为了让大家查找方便这里列出在j2me中定义的系统属性值,如果你的手机支持相关的jsr,那么就可以通过上述方法取得属性值。
| 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) |
应用程序属性值是在应用程序描述符文件或者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文件的大小有限制的。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器