幸运的是,黑莓手机会把自己的设备型号/操作系统版本等信息通过http请求头传递给Web服务器。比如8300手机传递给服务器的httpheaderuser-agent的值为BlackBerry8300/4.5.0.44Profile/MIDP-2.0Configuration/CLDC-1.1VendorID/-1;9700手机传递给服务器的httpheaderuser-agent的值为BlackBerry9700/5.0.0.334Profile/MIDP-2.1Configuration/CLDC-1.1VendorID/-1。有了user-agent信息,Web服务器就可以了解客户端设备的能力。
在Tomcat等J2EE服务器上面,你可以通过ServletAPIrequest.getHeader("user-agent")获得上述信息,然后自动找到对应版本的jad/jar/cod文件发送给客户端。服务器端编码的工作,前人已经做了很多,我们拿来稍微改就可以在J2EE服务器上面自动地为不同型号黑莓手机分发对应版本的应用程序文件了。
我们为黑莓手机对Sun网站提供的代码做了如下修改。
首先修改provisioner.props文件,设定8300和9700对应的不同目录下面的UISample文件。(相应的,要把BlackBerry项目deliverables目录的两个子目录4.5.0和5.0.0和里面的文件拷贝到J2EE WAR文件根目录下面)。
- device[BlackBerry8300]=BlackBerry8300
- device[BlackBerry9700]=BlackBerry9700
- BlackBerry8300[UISample.jad]=4.5.0/UISample.jad
- BlackBerry8300[UISample.jar]=4.5.0/UISample .jar
- BlackBerry8300[UISample.cod]=4.5.0/UISample.cod
- BlackBerry9700[UISample.jad]=5.0.0/UISample.jad BlackBerry9700[UISample.jar]=5.0.0/UISample.jar BlackBerry9700[UISample.cod]=5.0.0/UISample.cod
然后修改Provisioner.java代码,加入cod文件后缀的MIME定义(原有代码已经有jad和jar的MIME定义)。
- // The Bl ackBerr y COD e xte nsio n
- priv at e s t ati c fi na l St ri ng COD_ E XT = " .co d";
- // The Bl ackBer r y COD M IME ty pe - J i an g
- private s tatic final S tring COD_MIME = " a pplicat i on/vnd.ri m.c od";
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shouji/article-21862-8.html
烊烊太萌了
要的不就是不断的在变化吗
面对给中华民族带来史上最深重灾难的日本