Как правильно использовать списки PIM в J2ME?
Как правильно проверить, поддерживается ли строковый массив 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);;
}
Неважно, если я закомментирую блок "если", он всегда вылетает. Единственное исправление, которое я вижу, - это полное игнорирование адресов, пожалуйста, помогите.
2 ответа
Лучший способ сделать это. Это работает нормально для меня. Смотрите этот образец,
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);
...
...
}
}
}
На устройстве мне не удалось получить Contact.NAME, хотя isSupportedField(Contact.NAME) вернул true. Затем я должен был получить отдельные поля Contact.NAME, позвонив
String[] Names = ContactObj.getStringArray(Contact.NAME, 0);
Когда вы объединяете все элементы в массиве Names, вы получаете имя контакта. Это работало на всех устройствах.