移动环境中的 Personal Information Management (PIM)
随着新设备不断上市,在移动设备上提供 Address Book、Calendar 和 Task List 成为了一项必然的要求。J2ME 应用程序也需要访问 这些数据。可选包 JSR 75 Personal Information Management (PIM) 提供了这个功能。
它不仅允许访问包含联系人、约会和任务的本地个人信息,还允许访问基于附加到设备上的 SIM 卡和 Local and Remote Personal Information 数据库的信息。
PIM 包支持从 vCard 和 vCalendar 导入和导出数据,vCard 和 vCalendar 分别是 Address Book 和 Calendar 的 Internet 标准格 式。它还拥有阻止未授权类检索个人信息的安全特性。
另一个可选包 JSR 75 File Connection 提供一种访问本文探讨范围之外的本地文件系统的方法。
J2ME PIM 包
Java PIM 包通过 javax.microedition.pim 包表示。
这个包定义的重要接口包括:
Contact —— 这个接口表示 Address Book 上的单个联系人。
ContactList —— 这个接口表示 Address Book,这是一个 Contact 列表。
Event —— 这个接口表示单个 Calendar Event。
EventList —— 这个接口表示一个 Calendar 事件列表。
ToDo —— 这个接口表示 Task List 中的单个 Task。
ToDoList —— 这个接口表示 Task 列表。
这个包定义的主要类是:
PIM —— PIM 类定义一些方法,用于创建一个所有现有列表的索引,打开并编辑那些列表,将其作为来自 vCard 和 vCalendar (Contact 和 Calendar 的 Internet 标准)的导入或导出。
Contact 和 ContactList
一个 Contact 表示 Address Book 中的单个条目。Contact 中的主要字段是 Name、Address、Email、Birthday、Photo 和 Telephone 。
为了确保跨平台可移植性,建议使用 Super Interface PIMList 提供的方法 isSupportedField()。
清单 1 展示如何向 Address Book 添加一个 Contact:
清单 1. 将 Contact 添加到 Address Book
ContactList addressBook = null;
try {
addressBook = (ContactList) PIM.getInstance().openPIMList(PIM.CONTACT_LIST,
PIM.READ_WRITE);
} catch (PIMException e) {
// Exit Application
}
Contact singleContact = addressBook.createContact();
String[] name = new String[addressBook.stringArraySize(Contact.NAME)];
if (addressBook.isSupportedField(Contact.NAME_FORMATTED)
singleContact.addString(Contact.NAME_FORMATTED,
PIMItem.ATTR_NONE, "Mrs. Jane Doe");
The createContact() method creates a temporary empty Contact. A commit() call makes
the Contact data persistent. It is advisable to close the lists by invoking the close()
method after necessary operations have been performed.
try {
singleContact.commit();
} catch (PIMException e) {
// Exception occured
}
try {
// Other cleanup tasks
addressBook.close();
} catch (PIMException e) {
}