J2ME可選包—PIM用法詳解

來源:互聯網
上載者:User

你對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規範中同樣對欄位中的基礎資料型別 (Elementary Data Type)進行了定義,例如在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你可以訪問他們。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.