JSR75 PIM - _譱悥Leasing - zhuyonghui - 和讯博客
JSR75 PIM [原创 2010-05-14 14:44:17]   

 

PIMJ2ME开发者提供了访问目标设备上存储的个人信息的API

PIM共由8个接口和6个类(其中4个异常类)组成,定义在javax.microedition.pim包中。

PIM定义了3种类型的个人信息列表,包括:个人通讯录、日程表和任务表,通常他们都是以本地形式存储在设备上。PIM为每种类型的个人信息列表都提供了如下访问接口。

ContactList接口用于访问设备中的个人通讯录、联系人列表。

EventList接口用于访问日程表。

ToDoList接口用于访问任务表。

3个接口都是PIMList得子接口,PIMList接口定义了访问个人信息列表的公共方法。

 

PIM定义的个人信息列表由一些项目组成,列表类型不同,其中的项目类型也不同。PIM为每种类型的项目都定义如下访问接口。

Contact接口用于访问联系人列表中的项目。

Event接口用于访问日程表中的项目。

ToDo接口用于访问任务表中的项目。

3个接口都是PIMItem得子接口,PIMItem接口定义了访问个人信息项目的公共方法。

 

 

       在使用PIM之前,需要先确定是否支持PIM

System.getProperty(“microedition.pim.version”);

如果不支持,则返回null.

 

实战代码

(这里是获取电话本中信息,其他类型数据过程类似)

  1. public class GetPIM implements Runnable {  
  2.         public void run() {  
  3.   
  4.             String[] listNames = PIM.getInstance().listPIMLists(PIM.CONTACT_LIST);  
  5.             int size = listNames.length;  
  6.             String name = null;  
  7.   
  8.             //获取联系人列表名称:  
  9.             form.append("****信息列表名称****\t");  
  10.   
  11.             for (int i = 0; i < size; i++) {  
  12.                 System.out.println(listNames[i] + "\n");  
  13.                 form.append(listNames[i]);  
  14.                 name = listNames[i];  
  15.                 try {  
  16.                     list = (ContactList) PIM.getInstance().openPIMList(PIM.CONTACT_LIST, PIM.READ_WRITE, name);  
  17.                     int[] supportFields = list.getSupportedFields();  
  18.   
  19.                     int fieldSize = supportFields.length;  
  20.                     form.append("\n***支持字段个数****\t" + fieldSize);  
  21.   
  22.                     for (int j = 0; j < fieldSize; j++) {  
  23.                         String fieldLabel = list.getFieldLabel(supportFields[j]);  
  24.                         //                      form.append("\n***支持的字段名称****\n"+j+".\t"+fieldLabel);  
  25.                         allLabel.addElement(fieldLabel);  
  26.                         int fieldType = list.getFieldDataType(supportFields[j]);  
  27.                         //                      form.append("\n***支持的类型****\n"+j+".\t"+fieldType);  
  28.                         allType.addElement(new Integer(fieldType));  
  29.   
  30.                     }  
  31.                       
  32.                     //遍历电话本中所有条目:  
  33.                     Enumeration items = list.items();  
  34.                     while (items.hasMoreElements()) {  
  35.                         form.append("\n****添加数据****\n");  
  36.                         Contact contact = (Contact) items.nextElement();  
  37.   
  38.                         //添加电话:  
  39.                         //try-catch 语句是防止某个条目没有内容,从而会抛出InvalidIndex的异常,使得程序无法继续。  
  40.                         try {  
  41.                             String tel = contact.getString(Contact.TEL, 0);  
  42.                             if (tel != null) {  
  43.                                 form.append("电话" + tel + "\n");  
  44.                             }  
  45.                         } catch (Exception ex) {  
  46.                             continue;  
  47.                         }  
  48.   
  49.                         //获取联系人姓名  
  50.                         //try-catch 语句是防止某个条目没有内容,从而会抛出InvalidIndex的异常,使得程序无法继续。  
  51.                         try {  
  52.                             String[] nameS = contact.getStringArray(Contact.NAME, 0);  
  53.                             int nameSize = nameS.length;  
  54.                             for (int m = 0; m < nameSize; m++) {  
  55.                                 if (nameS[m] != null) {  
  56.                                     form.append(nameS[m] + "\t");  
  57.                                 }  
  58.                             }  
  59.                         } catch (Exception ex) {  
  60.                             continue;  
  61.                         }  
  62.                     }  
  63.   
  64.                 } catch (PIMException e) {  
  65.                     form.append("\n异常了" + e.getMessage());  
  66.                 } catch (NullPointerException npe) {  
  67.                     form.append("\n异常了" + npe.getMessage());  
  68.                 } catch (Exception e) {  
  69.                     form.append("\n异常了" + e.getMessage());  
  70.                 }  
  71.             }  
  72.   
  73.         }  
  74.     }  

     流程小结:

1. String[] listNames = PIM.getInstance().listPIMLists(PIM.CONTACT_LIST);

获得列表名称,肯能有多个,所以是个数组。

2. ContactList list = (ContactList) PIM.getInstance().openPIMList(PIM.CONTACT_LIST, PIM.READ_WRITE, name);

根据列表名称,获取列表
3. Enumeration items = list.items();

while (items.hasMoreElements()) {

       Contact contact = (Contact) items.nextElement();

}

遍历列表,获得实际条目。

4. 获得电话号码(其他字段内容类似),需要在while循环里进行

String tel = contact.getString(Contact.TEL, 0);

我最近在玩和讯财经微博,很方便,很实用。
一句话,一张图,随时随地与我分享理财心得与亲历见闻。
点击以下链接xx,来和我一起玩吧!

郑重声明:资讯 【JSR75 PIM - _譱悥Leasing - zhuyonghui - 和讯博客】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——