修改联系人信息
对于仅支持一个值的字段,调用合适的set方法用一个新值替代一个已存在的值.
注:如果你调用一个增加方法,例如addString(),对于已经存在一个值的字段来说,将抛出一个FieldFullException异常.使用相应的set方法,例如setString(),修改一个已经存在的值.
对于包含了一个字符数组的姓名和地址字段,获取此数组,然后将它加入之前,修改一个或多个数组上的索引.
|
if (contact.countValues(Contact.NAME) > 0) {
String[] newname = contact.getStringArray(Contact.NAME, 0);
}
// Change the prefix to Dr. and add the suffix, Jr.
newname[Contact.NAME_PREFIX] = "Dr.";
newname[Contact.NAME_SUFFIX] = "Jr.";
contact.setStringArray(Contact.NAME, 0, Contact.ATTR_NONE, newname);
|
对于支持多个值的字段,在将另外一个值加入之前,先验证其没有超过值的最大个数。
|
if (contact.countValues(Contact.EMAIL) < contactList.maxValues(Contact.EMAIL))
{
contact.addString(Contact.EMAIL,Contact.ATTR_NONE, aisha.wahl@blackberry.com");
}
|
保存一个联系人信息
调用commit().在提交修改之前,为判断任何联系人字段自从最后保存以来是否已经发生变化,调用isModified().
|
if(contact.isModified()) {
contact.commit();
}
|
获取联系人信息
调用PIMList.Items()
注:当你调用PIMList.Items()获取一个列表项的迭代时,列表项的顺序没有定义.如果必要,你的应用程序必须将它们排序.
对于一个特定的联系人,调用PIMItem.getFields()获取一个拥有数据的字段ID的数组.调用PIMItem.getString()获取字段值.
|
ContactList contactList = (ContactList)PIM.getInstance().openPIMList(
PIM.CONTACT_LIST, PIM.READ_WRITE);
Enumeration enum = contactList.items();
while (enum.hasMoreElements()) {
Contact c = (Contact)enum.nextElement();
int[] fieldIds = c.getFields();
int id;
for(int index = 0; index < fieldIds.length; ++index) {
id = fieldIds[index];
if(c.getPIMList().getFieldDataType(id) == Contact.STRING)
{
for(int j=0; j < c.countValues(id); ++j) {
String value = c.getString(id, j);
System.out.println(c.getPIMList().getFieldLabel(id) + "=" + value);
}
}
}
}
|
将一个联系人转化为序列化格式
为了导入或导出PIM项数据,使用一个输出写入流将BlackBerry设备中的任务导出为一个支持的序列化格式,例如vCard.
为了获取一个支持的格式的字符串数组,调用PIM.supportedSerialFormats(),并指定列表类型(PIM.Contact_LIST).为了将一个项写到一个支持的序列化格式里,调用toSerialFormat().
注:当写到一个输出流时enc参数指定了字符编码格式.支持的字符编码格式包括"UTF8," "ISO-8859-1," 和 "UTF-16BE."此参数不能为空.
|
ContactList contactList = (ContactList)PIM.getInstance().openPIMList(
PIM.CONTACT_LIST, PIM.READ_ONLY);
String[] dataFormats = PIM.getInstance().supportedSerialFormats(
PIM.CONTACT_LIST);
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
Enumeration e = contactList.items();
while (e.hasMoreElements()) {
Contact c = (Contact)e.nextElement();
PIM.getInstance().toSerialFormat(c, byteStream, "UTF8", dataFormats[0]);
}
|