你对J2ME可选包—PIM的概念是否了解,这里和大家分享一下,PIM OP定义了一系列的API,提供了访问这些重要数据的方法和途径。有必要先谈一下什么是OP,OP的意思就是optionalpackage(可选包),他并不能提供一个整套的运行环境比如MIDP。
J2ME可选包—PIM介绍
PIM的意思是personal infomation management(个人信息管理),主要是针对用户的重要信息,例如通信录、提醒、日程等。PIM OP定义了一系列的API,提供了访问这些重要数据的方法和途径。有必要先谈一下什么是OP,OP的意思就是optionalpackage(可选包),他并不能提供一个整套的运行环境比如MIDP。他是对MIDP的扩展同时需要设备的支持。因此他并不是通用的,在移植性上存在问题。
在使用PIM OP之前我们必须判断它是否可用,方法很简单只是检查microedition.pim.version的属性值是不是null,例如:
- ...
- //CheckthatPIM OPtionalPackageisavailable
- Stringv=System.getProperty("microedition.pim.version");
- if(v!=null){
- //PIM OPavailable
- }else{
- //PIM OPnotavailable
- }
- ...
你不能通过在代码中检查pim包是否可用来判断上述问题,因为pim是和设备实现相关的。PIM定义了三种信息类型,分别是Contactlist,Eventlist,ToDolist,设备并一定要支持全部这三种类型,但是他至少要支持一种。
所有的API都在javax.microedition.pim包里面,你要通过PIM.getInstance()方法来得到PIM类,然后你才可以调用openPIMList()方法得到上述的list.例如下面的代码:
- ...
- PIMPIMsingleton=PIM.getInstance();
- ContactListcl=null;
- try{
- cl=(ContactList)singleton.openPIMList(PIM.CONTACT_LIST,
- PIM.READ_ONLY);
- //usethecontactlist
- }
- catch(PIMException){
- //nocontactlistavailable!
- }
- catch(SecurityException){
- //theapplicationisnotallowedtoaccessthelist
- }
- ...
值得一提的是SecurityException,为了安全只有可信任的MIDlets才可以访问这些数据。如果不是的话会抛出这个异常,这恰恰符合MIDP中的安全模式。在PIMlist中的数据称作PIM item,你可以把PIMlist看作是容器,把PIM item看作是实体。要想访问这些item可以通过如下代码:
- importjava.microedition.pim.*;
- importjava.util.*;
- ContactListlist=...//acontactlist
- try{
- Enumerationenum=list.items();
- while(enum.hasMoreElements()){
- Contactcontact=(Contact)enum.nextElement();
- //dosomethingwiththecontact
- }
- }
- catch(PIMExceptione){
- //anerroroccurred
- }
- catch(SecurityExceptione){
- //can'treadthislist
- }
- ...
在PIM item中可用的字段跟设备实现是相关的,因此在使用某个字段的时候有必要调用它的isSupportedField来判断一下,PIM规范中同样对字段中的基本数据类型进行了定义,例如在Contact里面的TEL字段就是String你通过getStri()方法来得到,生日字段就是long类型的通过getDate()来得到例如:
- ...
- Contactcontact=...;
- Stringtel=contact.getString(Contact.TEL,0);
- ...
- ...
- Contactcontact=...;
- longbday=contact.getDate(Contact.BIRTHDAY,0);
- ...
在contact里面包括多个字段,通过后面的index你可以访问他们。
【编辑推荐】
- J2ME KVM教程之KVM编译过程
- J2ME开发环境搭建必备手册
- 解析J2ME各大应用平台环境
- MotorolaJ2ME开发时需要注意的几个细节
- Java2平台J2SE、J2EE、J2ME三大版本的区别