2013-02-16 89 views
2

如何在J2ME中使用PIM檢索SIM卡和電話簿聯繫人。我試過 PIM.getInstance()。listPIMLists(PIM.CONTACT_LIST); 但它只顯示電話簿聯繫人。J2ME抓取SIM卡聯繫人

+0

可能重複http://stackoverflow.com/questions/4955323/can-you-access-sim -contacts-from-j2me) – Nate 2013-02-16 05:19:34

+0

對listPIMLists的調用只返回一個列表? – 2013-02-16 21:04:13

+0

是的,它只返回一個電話簿聯繫人列表。當我嘗試使用simaddressbook =(javax.microedition.pim.ContactList)(PIM.getInstance()。openPIMList(PIM.CONTACT_LIST,PIM.READ_WRITE,「SIM」))來讀取SIM聯繫人時;但它給予空指針異常 – jaya 2013-02-18 10:56:17

回答

0

可能是這種方法可以幫助你

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; 
} 
的[你能從J2ME訪問SIM卡聯繫人?](
相關問題