2012-10-12 61 views
2

我在J2me上開發了一個應用程序,使用的是Nokia X2和c2-05。我從數據庫訪問聯繫人並在內存中寫下來,直到我使用手機內存寫入聯繫人時才工作正常,但是現在我只想將聯繫人寫入SIM卡內存,但不是。雖然我可以從SIM卡和手機內存中讀取,但只能寫入手機,而SIM不允許我使用,這很奇怪。我的意思是要麼允許讀寫,要麼它不應該寫,但它允許讀取但不寫。由於在j2me中將聯繫人寫入SIM卡

這是我使用

private class ContactWriter { 

    private ContactList clist; 
    public ContactWriter() throws PIMException { 
     clist = (ContactList) PIM.getInstance().openPIMList(PIM.CONTACT_LIST, PIM.WRITE_ONLY, "SIM"); //or I used list[1] in my case its SIM, but still didn't get that! 
    } 

    public void close() throws PIMException { 
     clist.close(); 
    } 

    public void commitContact(ContactDTO contact) throws PIMException { 

     Contact c = clist.createContact(); 
     String name[] = new String[clist.stringArraySize(Contact.NAME)]; 
     String addr[] = new String[clist.stringArraySize(Contact.ADDR)]; 

     if (contact.getName() != null) { 

      if (clist.isSupportedField(Contact.NAME)) { 
       boolean yes = false; 
       if (clist.isSupportedArrayElement(Contact.NAME, Contact.NAME_GIVEN)) { 
        name[Contact.NAME_GIVEN] = contact.getName(); 
        yes = true; 
       } else if (clist.isSupportedArrayElement(Contact.NAME, Contact.NAME_OTHER)) { 
        name[Contact.NAME_OTHER] = contact.getName(); 
        yes = true; 
       } else if (clist.isSupportedArrayElement(Contact.NAME, Contact.NAME_FAMILY)) { 
        name[Contact.NAME_FAMILY] = contact.getName(); 
        yes = true; 
       } 
       if (yes) { 
        c.addStringArray(Contact.NAME, Contact.ATTR_NONE, name); 
       } 
      } else if (clist.isSupportedField(Contact.FORMATTED_NAME)) { 
       c.addString(Contact.FORMATTED_NAME, Contact.ATTR_NONE, contact.getName()); 
      } 
     } 

     if (contact.getAddress() != null) { 
      if (clist.isSupportedField(Contact.ADDR)) { 
       boolean yes = false; 
       if (clist.isSupportedArrayElement(Contact.ADDR, Contact.ADDR_EXTRA)) { 
        addr[Contact.ADDR_EXTRA] = contact.getAddress(); 
        yes = true; 
       } else if (clist.isSupportedArrayElement(Contact.ADDR, Contact.ADDR_STREET)) { 
        addr[Contact.ADDR_STREET] = contact.getAddress(); 
        yes = true; 
       } 
       if (yes) { 
        c.addStringArray(Contact.ADDR, Contact.ATTR_NONE, addr); 
       } 
      } else if (clist.isSupportedField(Contact.FORMATTED_ADDR)) { 
       c.addString(Contact.FORMATTED_ADDR, Contact.ATTR_NONE, contact.getAddress()); 
      } 
     } 

     if (clist.isSupportedField(Contact.TEL)) { 
      if ((clist.isSupportedAttribute(Contact.TEL, Contact.ATTR_HOME)) && (contact.getPhoneHome() != null)) { 
       c.addString(Contact.TEL, Contact.ATTR_HOME, contact.getPhoneHome()); 
      } 
      if ((clist.isSupportedAttribute(Contact.TEL, Contact.ATTR_MOBILE)) && (contact.getPhoneMobile() != null)) { 
       c.addString(Contact.TEL, Contact.ATTR_MOBILE, contact.getPhoneMobile()); 
      } 
      if ((clist.isSupportedAttribute(Contact.TEL, Contact.ATTR_WORK)) && (contact.getPhoneWork() != null)) { 
       c.addString(Contact.TEL, Contact.ATTR_WORK, contact.getPhoneWork()); 
      } 
      if ((clist.isSupportedAttribute(Contact.TEL, Contact.ATTR_PAGER)) && (contact.getPager() != null)) { 
       c.addString(Contact.TEL, Contact.ATTR_PAGER, contact.getPager()); 
      } 
     } 

     if ((clist.isSupportedField(Contact.EMAIL)) && (contact.getEmail() != null)) { 
      c.addString(Contact.EMAIL, Contact.ATTR_NONE, contact.getEmail()); 
     } 

     if ((clist.isSupportedField(Contact.ORG)) && (contact.getOrganisation() != null)) { 
      c.addString(Contact.ORG, Contact.ATTR_NONE, contact.getOrganisation()); 
     } 

     c.commit(); 
    } 
} 
+0

我開始知道,由於安全測量,無法將聯繫人寫入SIM卡。雖然可以通過某些方式與服務提供商聯繫並訪問API來執行該任務。 – Saqib

回答

0

它不可能寫在SIM卡聯繫人的代碼。由於sim由操作員提供,所以在編寫時可能會遇到兼容性問題。這就是爲什麼j2me不允許在sim上編寫聯繫人。

相關問題