你對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你可以訪問他們。