Java me 在j2me中将联系人写入SIM卡

Java me 在j2me中将联系人写入SIM卡,java-me,jsr75,pim,Java Me,Jsr75,Pim,我已经在J2me中开发了一个应用程序,在诺基亚X2和c2-05上使用。我确实可以从数据库中访问联系人并将其写入内存,在我使用手机内存写入联系人之前,它工作正常,但现在我只想将联系人写入SIM卡内存,但它没有。虽然我可以从SIM卡和手机存储器中读取数据,但只能向手机写入数据,而SIM卡不允许,这很奇怪。我的意思是,要么它应该允许读写,要么它根本不应该读写,但它允许读但不允许写。谢谢 这是我正在使用的代码 private class ContactWriter { private Cont

我已经在J2me中开发了一个应用程序,在诺基亚X2和c2-05上使用。我确实可以从数据库中访问联系人并将其写入内存,在我使用手机内存写入联系人之前,它工作正常,但现在我只想将联系人写入SIM卡内存,但它没有。虽然我可以从SIM卡和手机存储器中读取数据,但只能向手机写入数据,而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();
    }
}

无法在sim卡上写入联系人。因为sim卡是由运营商提供的,所以在您写入时可能存在兼容性问题。这就是为什么j2me不允许在sim卡上写联系人。

在sim卡上写联系人是不可能的。因为sim卡是由运营商提供的,所以在您写入时可能存在兼容性问题。这就是j2me不允许在sim卡上写入联系人的原因。

我开始知道,由于安全措施,无法将联系人写入sim卡。尽管通过某种方式,如果与服务提供商联系并访问API来执行该任务,这是可能的。我知道,由于安全措施,无法将联系人写入SIM卡。尽管通过某种方式,与服务提供商联系并访问API来执行该任务是可能的。