J2ME可选包—PIM用法详解
创始人
2024-07-15 06:51:12
0

你对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,例如: 

  1.   ...  
  2.   //CheckthatPIM OPtionalPackageisavailable  
  3.   Stringv=System.getProperty("microedition.pim.version");  
  4.   if(v!=null){  
  5.   //PIM OPavailable  
  6.   }else{  
  7.   //PIM OPnotavailable  
  8.   }  
  9.   ... 

  你不能通过在代码中检查pim包是否可用来判断上述问题,因为pim是和设备实现相关的。PIM定义了三种信息类型,分别是Contactlist,Eventlist,ToDolist,设备并一定要支持全部这三种类型,但是他至少要支持一种。

  所有的API都在javax.microedition.pim包里面,你要通过PIM.getInstance()方法来得到PIM类,然后你才可以调用openPIMList()方法得到上述的list.例如下面的代码: 

  1.  ...  
  2.   PIMPIMsingleton=PIM.getInstance();  
  3.   ContactListcl=null;  
  4.   try{  
  5.   cl=(ContactList)singleton.openPIMList(PIM.CONTACT_LIST,  
  6.   PIM.READ_ONLY);  
  7.   //usethecontactlist  
  8.   }  
  9.   catch(PIMException){  
  10.   //nocontactlistavailable!  
  11.   }  
  12.   catch(SecurityException){  
  13.   //theapplicationisnotallowedtoaccessthelist  
  14.   }  
  15.   ...  

   值得一提的是SecurityException,为了安全只有可信任的MIDlets才可以访问这些数据。如果不是的话会抛出这个异常,这恰恰符合MIDP中的安全模式。在PIMlist中的数据称作PIM item,你可以把PIMlist看作是容器,把PIM item看作是实体。要想访问这些item可以通过如下代码: 

  1.   importjava.microedition.pim.*;  
  2.   importjava.util.*;  
  3.   ContactListlist=...//acontactlist  
  4.   try{  
  5.   Enumerationenum=list.items();  
  6.   while(enum.hasMoreElements()){  
  7.   Contactcontact=(Contact)enum.nextElement();  
  8.   //dosomethingwiththecontact  
  9.   }  
  10.   }  
  11.   catch(PIMExceptione){  
  12.   //anerroroccurred  
  13.   }  
  14.   catch(SecurityExceptione){  
  15.   //can'treadthislist  
  16.   }  
  17.   ...  

  在PIM item中可用的字段跟设备实现是相关的,因此在使用某个字段的时候有必要调用它的isSupportedField来判断一下,PIM规范中同样对字段中的基本数据类型进行了定义,例如在Contact里面的TEL字段就是String你通过getStri()方法来得到,生日字段就是long类型的通过getDate()来得到例如: 

  1.   ...  
  2.   Contactcontact=...;  
  3.   Stringtel=contact.getString(Contact.TEL,0);  
  4.   ...  
  5.   ...  
  6.   Contactcontact=...;  
  7.   longbday=contact.getDate(Contact.BIRTHDAY,0);  
  8.   ... 

  在contact里面包括多个字段,通过后面的index你可以访问他们。

 【编辑推荐】

  1. J2ME KVM教程之KVM编译过程
  2. J2ME开发环境搭建必备手册
  3. 解析J2ME各大应用平台环境
  4. MotorolaJ2ME开发时需要注意的几个细节
  5. Java2平台J2SE、J2EE、J2ME三大版本的区别

 

 

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...