如何在J2ME中正确使用PIM列表?

时间:2011-03-16 05:17:23

标签: java-me contacts jsr75 pim

检查是否支持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”块它总是崩溃并不重要。只有我能看到的修复是完全忽略地址,请帮助。

2 个答案:

答案 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。这适用于所有设备。