千家信息网

如何理解J2ME PIM的概念

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章将为大家详细讲解有关如何理解J2ME PIM的概念,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。这里和大家分享一下J2ME PIM的概念,根据
千家信息网最后更新 2026年11月04日如何理解J2ME PIM的概念

这篇文章将为大家详细讲解有关如何理解J2ME PIM的概念,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

这里和大家分享一下J2ME PIM的概念,根据JSR75的定义,Personal Information Management(PIM)API提供了一种访问移动设备上的本地个人数据的方法,这些数据包括Contacts数据、Tasks数据和Appointments数据等等。

J2ME PIM概论

根据JSR75的定义,Personal Information Management(PIM)API提供了一种访问移动设备上的本地个人数据的方法,这些数据包括Contacts数据、Tasks数据和Appointments数据等等。在本文中,我们将仔细审视这个API,讨论有关PIM MIDlet的开发、安全和部署问题,并比较PIM和另一个J2MEAPI——RecordManagementStore(RMS)。

移动环境中的Personal Information Management(PIM)

随着新设备不断上市,在移动设备上提供AddressBook、Calendar和TaskList成为了一项必然的要求。J2ME应用程序也需要访问这些数据。可选包JSR75 Personal Information Management(PIM)提供了这个功能。

它不仅允许访问包含联系人、约会和任务的本地个人信息,还允许访问基于附加到设备上的SIM卡和Local and Remote Personal Information数据库的信息。

PIM包支持从vCard和vCalendar导入和导出数据,vCard和vCalendar分别是AddressBook和Calendar的Internet标准格式。它还拥有阻止未授权类检索个人信息的安全特性。

另一个可选包JSR75 File Connection提供一种访问本文探讨范围之外的本地文件系统的方法。

J2ME PIM包

Java PIM包通过javax.microedition.pim包表示。

这个包定义的重要接口包括:

Contact——这个接口表示AddressBook上的单个联系人。

ContactList——这个接口表示AddressBook,这是一个Contact列表。

Event——这个接口表示单个CalendarEvent。

EventList——这个接口表示一个Calendar事件列表。

ToDo——这个接口表示TaskList中的单个Task。

ToDoList——这个接口表示Task列表。

这个包定义的主要类是:

PIM——PIM类定义一些方法,用于创建一个所有现有列表的索引,打开并编辑那些列表,将其作为来自vCard和vCalendar(Contact和Calendar的Internet标准)的导入或导出。

Contact和ContactList

一个Contact表示AddressBook中的单个条目。Contact中的主要字段是Name、Address、Email、Birthday、Photo和Telephone。

为了确保跨平台可移植性,建议使用SuperInterfacePIMList提供的方法isSupportedField()。

清单1展示如何向AddressBook添加一个Contact:

清单1.将Contact添加到AddressBook

ContactListaddressBook=null;  try{  addressBook=(ContactList)PIM.getInstance().openPIMList(PIM.CONTACT_LIST,  PIM.READ_WRITE);  }catch(PIMExceptione){  //ExitApplication  }   ContactsingleContact=addressBook.createContact();  String[]name=newString[addressBook.stringArraySize(Contact.NAME)];   if(addressBook.isSupportedField(Contact.NAME_FORMATTED)  singleContact.addString(Contact.NAME_FORMATTED,  PIMItem.ATTR_NONE,"Mrs.JaneDoe");   ThecreateContact()methodcreatesatemporaryemptyContact.Acommit()callmakes  theContactdatapersistent.Itisadvisabletoclosethelistsbyinvokingtheclose()  methodafternecessaryoperationshavebeenperformed.   try{  singleContact.commit();  }catch(PIMExceptione){  //Exceptionoccured  }  try{  //Othercleanuptasks  addressBook.close();  }catch(PIMExceptione){   }

Event和EventList

一个Event表示Event数据库中的单个条目,比如,移动设备上的日历。Event中的关键字段是Location、Summary、Startdate、EndDate和Alarmnotification。清单2展示如何向Event数据库添加一个Event。

清单2.添加一个Event

EventListeventList=null;  try{  eventList=(EventList)PIM.getInstance().openPIMList(PIM.EVENT_LIST,  PIM.READ_WRITE);  }catch(PIMExceptione){  return;  }  EventsingleEvent=eventList.createEvent();  if(eventList.isSupportedField(Event.SUMMARY))  singleEvent.addString(Event.SUMMARY,PIMItem.ATTR_NONE,"JavaTraining");  if(eventList.isSupportedField(Event.START))  singleEvent.addDate(Event.START,PIMItem.ATTR_NONE,aDate.getTime());  if(eventList.isSupportedField(Event.END))  singleEvent.addDate(Event.END,PIMItem.ATTR_NONE,aDate.getTime());   try{  singleEvent.commit();  }catch(PIMExceptione){  //Anerroroccured  }  try{  eventList.close();  }catch(PIMExceptione){   }

ToDo和ToDoList

ToDo接口表示移动设备上的Task数据库中的单个任务,重要的字段是NoteorSummary、Priority、CompletionDate、DueDate和whethercompleted。清单3展示如何向数据库持久化添加一个ToDo。

清单3.添加一个Task

ToDoListtasks=null;  try{  tasks=(ToDoList)PIM.getInstance().openPIMList(PIM.TODO_LIST,  PIM.READ_WRITE);  }catch(PIMExceptione){  //Anerroroccurred  return;  }  ToDosingleTask=tasks.createToDo();  if(tasks.isSupportedField(Event.SUMMARY))  singleTask.addString(ToDo.SUMMARY,PIMItem.ATTR_NONE,"ShoppingforHalloween");  if(tasks.isSupportedField(Event.DUE))  singleTask.addDate(ToDo.DUE,PIMItem.ATTR_NONE,newDate().getTime());   try{  singleTask.commit();  }catch(PIMExceptione){  //Anerroroccured  }  try{  tasks.close();  }catch(PIMExceptione){   }

PIM与RMS的区别

在继续讨论之前,我们先回顾一下J2ME提供的另一个关键功能,RecordManagementStore(RMS)概念。RMS允许J2ME应用程序持久地本地存储数据。RMS包含以下组件:

Records——与每条记录拥有一个或多个字段的数据库系统不同,RMS中的一条Record是一个单独的数据字段。它没有一个预先定义的数据类型或大小,可以包含任意数据。

RecordStore——RecordStore是一个Records集合,可以通过J2ME应用程序根据名称访问。

以下是PIM和RMS的区别,尽管二者都负责在设备上存储持久数据。

PIM向(从)AddressBook、Calendar和TaskList等已定义的实体存储(和检索)数据。而另一方面,RMS向(从)一个常规数据库存储(和检索)数据。PIM中的单个实体是一个Contact、Calendar条目或一个Task,而在RMS中,单个实体是一个字节数组。

PIM并不局限于本地设备,它可以访问一个附加SIM或另一个远程设备中的数据。RMS只能访问本地设备中的数据。

PIM可以从vCalendar或vContact等外部源导入或导出,而RMS没有任何Export或Import功能。

与RMS相比,PIM中的数据解释更加灵活。例如,一个Contact(以标准格式定义)总是可以由另一个J2ME应用程序轻松解释。而RMS中的记录是字节数组,其他J2ME应用程序需要拥有关于如何解释它的信息。

一个示例——添加一个联系人

在这个小节中,我们将讨论此前提到过的一个方法addContact(),展示如何向AddressBook添加一个联系人。当在表单中提交一个用户命令时,这个方法(见清单4)将在一个单独的线程中调用。这个方法访问通过UITextfields字段输入的数据。

清单4.addContact()方法

//Import  importjavax.microedition.lcdui.*;  importjavax.microedition.midlet.*;  importjavax.microedition.pim.*;    //Textinput  TextFieldnameField;  TextFieldphoneField;   …   publicvoidaddContact(){   ContactListcontacts=null;   try{  contacts=(ContactList)PIM.getInstance().openPIMList(PIM.CONTACT_LIST,  PIM.READ_WRITE);  }catch(PIMExceptione){  //Anerroroccurred  e.printStackTrace();  }   Contactcontact=contacts.createContact();   String[]name=newString[contacts.stringArraySize(Contact.NAME)];   if(contacts.isSupportedArrayElement(Contact.NAME,Contact.NAME_GIVEN))  name[Contact.NAME_GIVEN]=nameField.getString();   if(contacts.isSupportedField(Contact.TEL))  contact.addString(Contact.TEL,Contact.ATTR_HOME,phoneField.toString());   try{   contact.commit();   }catch(Exceptione){}   }

运行时和安全问题

PIM MIDlet应该在一个支持PIM的配置(即JSR75)中运行。我们通过在Sun的WirelessToolkit2.5上先单击Settings然后单击APISelection来选择以下设置。选择PIM MIDlet要运行的移动设备时使用相同的方法。

图1.PIM MIDlet Runtime API Selection

MIDlet需要其他权限才能读写Contacts、Calendar或TaskLists,可以通过在WirelessToolkit中单击Settings并选择Permissions来设置相关权限。这里提供了用于ContactList、EventList和TodoList的所有Read和Write权限。

图2.PIM MIDlet安全问题

我们讨论了J2ME中的另一个重要功能Personal Information Management(PIM),该功能允许访问移动设备上形式为Contact、Task和Event的本地数据。本文还比较了PIM和RMS,后者是处理设备数据的另一个功能。现在,您可以通过PIM自带的导入和导出功能同步J2ME应用程序和vCard以及vCalendar,后两者分别是Contact和Calendar的Internet标准格式。

关于如何理解J2ME PIM的概念就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

数据 设备 方法 单个 接口 清单 移动 功能 数据库 字段 应用程序 程序 应用 概念 安全 个人 信息 标准 联系人 存储 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 精品咖啡豆 互联网科技名片 互联网科技官网 互联网金融 科技金融 喔噻互联网科技 小马过河互联网科技 唐信互联网科技 大连 上海亿帐通互联网科技 人人互联网科技是培训 重庆科技学院互联网 青岛中康互联网医疗科技有限公司 互联网科技产业特征 天津腾达互联网科技有限公司 允成互联网科技有限公司融资 伊宁互联网科技做什么的 昆明中奇联合互联网科技 北京天晋互联网科技有限公司 北京军民互联网科技公司 互联网科技自媒体灵感 武汉亿视互联网科技有限公司 互联网科技公司的优势 深圳互联网科技公司 互联网科技视频素材 卓越科技互联网 招聘 汉立互联网科技有限公司联系电话 现代科技和互联网有关系吗 米聚互联网科技南京有限公司排面 亳州好赞互联网科技有限公司 特约风豹互联网科技为什么扣费 山东蛋芒互联网科技有限公司
0