知识大全 详细说明 MIDP 中的属性问题
Posted 文件
篇首语:学而不思则罔,思而不学则殆。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 详细说明 MIDP 中的属性问题相关的知识,希望对你有一定的参考价值。
详细说明 MIDP 中的属性问题 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
本文目的是说明MIDP中的属性问题 主要涉及到jad和MANIFEST MF文件的一些概念 事实上很多人并不清楚这方面的细节 所以你应该仔细读读这篇文章 通常MIDP的应用程序是以 jar文件和 jad文件发布的 jar文件就是我们所说的jar包 jad文件的全名是java application descriptor 在jad文件中包含着Application Management Sofare用来管理MIDlets的生命周期的信息 当然也包括很多重要的属性 他们是成对出现的例如 MIDlet Name myjava 你可以通过调用getAppProperty( MIDlet Name )来得到String类型的myjava 这是非常方便的 如果你想让你的MIDlet去联网那么你可以定义一个name为SERVER_URL 把它的值定义//yourip:port/myservlet 这样如果你想去连接其他地址的话只需要修改jad文件了 不需要重新编译 因此我们要清楚一点在jad文件里面放置一些MIDlet初始化需要的值是比较可取的 在jar包里面包括一个目录META INFO里面有个文件是MANIFEST MF 它是用来描述JAR文件的 也包含一些其它的信息 你可能发现了 在MANIFEST MF和JAD文件中的一些值是相同的 那么这就存在着一个规则 AMS如何决定去读取哪个值呢?答案是这样的 如果MIDlets的jar包是signed的 那么AMS要去察看它的数字签名 如果是有效的那么它会首先去读取MANIFEST MF的内容 然后读取jad文件中相同的内容 如果匹配的话那么它会安装这个jar包 如果不匹配的话就会拒绝安装 如果他发现数字签名无效的话直接就会拒绝安装 如果MDIlets的jar包是unsigned的话 那么AMS就把它认为是非信任的 他去读取jad文件的属性 如果发现没有的话它去读取MANIFEST的内容 也就是说如果jad和MANIFEST里面都有的属性AMS只会去读取jad中的 下面这个逻辑看上去是比较清楚的 given : String key // attribute name return : String value throws : NullPointerException if key is null if trusted String v = lookup key in manifest String v = lookup key in descriptor if ( v != null && v != null ) // found in both; must be the same value assert( pareTo( v ) == ); value = ( v != null )? v : v ; else // untrusted value = lookup key in descriptor if value == null value = lookup key in manifest return value 下面简单介绍一下MIDP 中定义的一些重要的参数 在MIDP 中定义了 个值 其中在MANIFEST MF和jad中都必须定义的有六个 他们是 MIDlet Name MIDlet Version MIDlet Vendor MicroEdition Profile MicroEdition Configuration MIDlet n 由于一个MIDlet suite里面可以有多个MIDlet的 因此你要说明他们比如MIDlet MIDlet MIDlet n 这一点非常的重要 在部署jar和jad文件到手机的时候一定要确保MIDlet Name的正确 它的值是你的jar包的名字!否则不会安装成功的 还有两个值是jad文件中不许有的他们是MIDlet Jar URL MIDlet Jar Size 其中应该注意的是MIDlet Jar URL 如果你要是通过OTA下载的话 那么你不许让他指向你jar包的绝对地址 例如 关于一个MIDlet suite里面有多个MIDlet的情况我写了个简单的代码测试了一下 如果还有疑问的话你可以运行一下下面的程序 import javax microedition lcdui Display; import javax microedition lcdui Form; import javax microedition midlet MIDlet; import javax microedition midlet MIDletStateChangeException; /* * Created on * * TODO To change the template for this generated file go to * Window Preferences Java Code Style Code Templates */ /** * @author E C * * TODO To change the template for this generated type ment go to * Window Preferences Java Code Style Code Templates */ public class MIDlet extends MIDlet private Display display; /* (non Javadoc) * @see javax microedition midlet MIDlet#startApp() */ protected void startApp() throws MIDletStateChangeException // TODO Auto generated method stub display = Display getDisplay(this); display setCurrent(new Form( )); /* (non Javadoc) * @see javax microedition midlet MIDlet#pauseApp() */ protected void pauseApp() // TODO Auto generated method stub /* (non Javadoc) * @see javax microedition midlet MIDlet#destroyApp(boolean) */ protected void destroyApp(boolean arg ) throws MIDletStateChangeException // TODO Auto generated method stub import javax microedition lcdui Display; import javax microedition lcdui Form; import javax microedition midlet MIDlet; import javax microedition midlet MIDletStateChangeException; /* * Created on * * TODO To change the template for this generated file go to * Window Preferences Java Code Style Code Templates */ /** * @author E C * * TODO To change the template for this generated type ment go to * Window Preferences Java Code Style Code Templates */ public class MIDlet extends MIDlet private Display display; /* (non Javadoc) * @see javax microedition midlet MIDlet#startApp() */ protected void startApp() throws MIDletStateChangeException // TODO Auto generated method stub display = Display getDisplay(this); display setCurrent(new Form( )); /* (non Javadoc) * @see javax microedition midlet MIDlet#pauseApp() */ protected void pauseApp() // TODO Auto generated method stub /* (non Javadoc) * @see javax microedition midlet MIDlet#destroyApp(boolean) */ protected void destroyApp(boolean arg ) throws MIDletStateChangeException // TODO Auto generated method stub import javax microedition lcdui Display; import javax microedition lcdui Form; import javax microedition midlet MIDlet; import javax microedition midlet MIDletStateChangeException; /* * Created on * * TODO To change the template for this generated file go to * Window Preferences Java Code Style Code Templates */ /** * @author E C * * TODO To change the template for this generated type ment go to * Window Preferences Java Code Style Code Templates */ public class MIDlet extends MIDlet private Display display; /* (non Javadoc) * @see javax microedition midlet MIDlet#startApp() */ protected void startApp() throws MIDletStateChangeException // TODO Auto generated method stub display = Display getDisplay(this); display setCurrent(new Form( )); /* (non Javadoc) * @see javax microedition midlet MIDlet#pauseApp() */ protected void pauseApp() // TODO Auto generated method stub /* (non Javadoc) * @see javax microedition midlet MIDlet#destroyApp(boolean) */ protected void destroyApp(boolean arg ) throws MIDletStateChangeException // TODO Auto generated method stub JAD文件的内容如下 MIDlet : MIDlet MIDlet MIDlet : MIDlet MIDlet MIDlet : MIDlet MIDlet MIDlet Jar URL: cha138/Article/program/Java/JSP/201311/19259相关参考