【问题标题】:J2ME fetching sim contactsJ2ME 获取 sim 联系人
【发布时间】:2013-02-01 03:30:19
【问题描述】:

如何在 J2ME 中使用 PIM 检索 SIM 和电话簿联系人。 我试过了 PIM.getInstance().listPIMLists(PIM.CONTACT_LIST); 但它只显示电话簿联系人。

【问题讨论】:

  • 对 listPIMLists 的调用只返回一个列表?
  • 是的,它只返回一个电话簿联系人列表。当我尝试使用 simaddressbook=(javax.microedition.pim.ContactList)(PIM.getInstance().openPIMList(PIM.CONTACT_LIST, PIM.READ_WRITE,"SIM")) 读取 sim 联系人时;但它给出了空指针异常
  • 我曾尝试在一些支持 J2ME 的手机上运行该应用程序。就像诺基亚 N17 和三星 C2-02 一样,都在阅读电话簿联系人。但是当我尝试在诺基亚 E5 上运行它时,它什么也没显示。

标签: java-me


【解决方案1】:

这个方法可能对你有帮助

public static HashLongObject loadContactFromPhone() {

    PIM iPim = PIM.getInstance();
    String[] allContactLists = iPim.listPIMLists(PIM.CONTACT_LIST);
    // Phone or SIM
    HashLongObject iPhoneBookList = new HashLongObject();
    int i;
    for (i = 0; i < allContactLists.length; i++) {
        try {
            PIMList iPIMList = iPim.openPIMList(PIM.CONTACT_LIST, PIM.READ_ONLY, allContactLists[i]);
            Enumeration iPimListEnum = iPIMList.items();
            String iContactName, iTelNumber;
            String []arrName;
            boolean isSupportFormettedName = iPIMList.isSupportedField(Contact.FORMATTED_NAME);
            if(isSupportFormettedName) {
                while (iPimListEnum.hasMoreElements()) {
                    try {
                        Contact iContact = (Contact) iPimListEnum.nextElement();
                        iContactName = iContact.getString(Contact.FORMATTED_NAME, 0);
                        iTelNumber = iContact.getString(Contact.TEL, 0);
                    } catch (Exception e) {
                        Logger.logStackTrace(e);
                        continue;
                    }

                    long corePhoneNumber = StringUtils.toCCPhoneNumber(iTelNumber);

                    // Check Duplicate
                    if (iPhoneBookList.containsKey(corePhoneNumber)) {
                        continue;
                    }

                    iPhoneBookList.put(corePhoneNumber, iContactName);
                }
            } else {
                while (iPimListEnum.hasMoreElements()) {
                    try {
                        Contact iContact = (Contact) iPimListEnum.nextElement();
                        arrName = iContact.getStringArray(Contact.NAME, Contact.ATTR_NONE);
                        iContactName = "";
                        if(arrName[Contact.NAME_FAMILY] != null) {
                            iContactName += arrName[Contact.NAME_FAMILY];
                        }
                        if(arrName[Contact.NAME_GIVEN] != null) {
                            iContactName += arrName[Contact.NAME_GIVEN];
                        }
                        iTelNumber = iContact.getString(Contact.TEL, 0);
                    } catch (Exception e) {
                        Logger.logStackTrace(e);
                        continue;
                    }

                    long corePhoneNumber = StringUtils.toCCPhoneNumber(iTelNumber);

                    // Check Duplicate
                    if (iPhoneBookList.containsKey(corePhoneNumber)) {
                        continue;
                    }

                    iPhoneBookList.put(corePhoneNumber, iContactName);
                }
            }
        } catch (PIMException ex) {
            Logger.logStackTrace(ex);
        } catch (Exception otherEx) {
            Logger.logStackTrace(otherEx);
        }
    }
    return iPhoneBookList;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多