检查是否支持PIM字符串数组的正确方法是什么?
我可以使用:if (MyContactList.isSupportedField(Contact.ADDR)){...}
或者我会更好地检查:
if (MyContactList.isSupportedArrayElement(Contact.ADDR, Contact.ADDR_STREET))
或两者兼而有之?
以下是我的问题代码:
if (MyContactList.isSupportedField(Contact.ADDR)) {
//...
//...
String[] AaddressLines = CurrentContact.getStringArray(Contact.ADDR, 0);;
}
如果我注释掉“if”块它总是崩溃并不重要。只有我能看到的修复是完全忽略地址,请帮助。
答案 0 :(得分:3)
更好的方式这样做。它对我来说很好。见这个样本,
String[] lists = pim.listPIMLists(PIM.CONTACT_LIST);
ContactList clist = (ContactList) pim.openPIMList(PIM.CONTACT_LIST, PIM.READ_ONLY, lists[index]);
Enumeration contacts = clist.items();
while (contacts.hasMoreElements()) {
Contact c = (Contact) contacts.nextElement();
int[] fields = clist.getSupportedFields();
for (int count = 0; count < fields.length; count++) {
int value = fields[count];
// do smething
if (value == Contact.ADDR && c.countValues(Contact.ADDR) > 0) {
String[] addr = c.getStringArray(Contact.ADDR, 0);
...
...
}
}
}
答案 1 :(得分:0)
在设备上,即使isSupportedField(Contact.NAME)返回true,我也无法获得Contact.NAME。然后我必须通过调用
来获取Contact.NAME的各个字段String [] Names = ContactObj.getStringArray(Contact.NAME,0);
当您在Names数组中连接所有元素时,您将获得Contact name。这适用于所有设备。