void InsertContactItemL()
{
CPbkContactEngine * engine = CPbkContactEngine::NewL();
CleanupStack::PushL(engine);
CPbkContactItem* contact = engine->CreateEmptyContactL();//新建一空通信录项
CleanupStack::PushL(contact);
_LIT(KFName,"King");
_LIT(KLName,"Chai");
_LIT(KNumber,"13777777777");
//修改first name
TPbkContactItemField* field = contact->FindField(EPbkFieldIdFirstName);
CPbkFieldInfo* fieldInfo;
field->TextStorage()->SetTextL(KFName);
//修改last name
field = contact->FindField(EPbkFieldIdLastName);
field->TextStorage()->SetTextL(KLName);
//修改手机号码
field = contact->FindField(EPbkFieldIdPhoneNumberMobile); //手机号码
field->TextStorage()->SetTextL(KNumber);
field = contact->FindField(EPbkFieldIdPhoneNumberGeneral); //电话号码
field->TextStorage()->SetTextL(_L("000000"));
field = contact->FindField(EPbkFieldIdPhoneNumberStandard); //电话号码 VCard: TEL;VOICE:111111
field->TextStorage()->SetTextL(_L("111111"));
//
fieldInfo = engine->FieldsInfo().Find(EPbkFieldIdPhoneNumberHome); //电话号码(家庭)
contact->AddFieldL(*fieldInfo);
field = contact->FindField(EPbkFieldIdPhoneNumberHome);
field->TextStorage()->SetTextL(_L("222222"));
fieldInfo = engine->FieldsInfo().Find(EPbkFieldIdPhoneNumberWork); //电话号码(办公)
contact->AddFieldL(*fieldInfo);
field = contact->FindField(EPbkFieldIdPhoneNumberWork);
field->TextStorage()->SetTextL(_L("333333"));
field = contact->FindField(EPbkFieldIdFaxNumber); //传真
field->TextStorage()->SetTextL(_L("444444"));
field = contact->FindField(EPbkFieldIdPagerNumber); //寻呼机
field->TextStorage()->SetTextL(_L("555555"));
field = contact->FindField(EPbkFieldIdEmailAddress); //电子邮件
field->TextStorage()->SetTextL(_L("666666"));
fieldInfo = engine->FieldsInfo().Find(EPbkFieldIdPostalAddress); //地址
contact->AddFieldL(*fieldInfo);
field = contact->FindField(EPbkFieldIdPostalAddress);
field->TextStorage()->SetTextL(_L("777777"));
fieldInfo = engine->FieldsInfo().Find(EPbkFieldIdURL); //网址
contact->AddFieldL(*fieldInfo);
field = contact->FindField(EPbkFieldIdURL);
field->TextStorage()->SetTextL(_L("888888"));
field = contact->FindField(EPbkFieldIdJobTitle); //职位
field->TextStorage()->SetTextL(_L("999999"));
field = contact->FindField(EPbkFieldIdCompanyName); //公司
field->TextStorage()->SetTextL(_L("123456"));
fieldInfo = engine->FieldsInfo().Find(EPbkFieldIdCompanyAddress); //地址
contact->AddFieldL(*fieldInfo);
field = contact->FindField(EPbkFieldIdCompanyAddress);
field->TextStorage()->SetTextL(_L("789012"));
fieldInfo = engine->FieldsInfo().Find(EPbkFieldIdDTMFString);
contact->AddFieldL(*fieldInfo);
field = contact->FindField(EPbkFieldIdDTMFString); //双音多频
field->TextStorage()->SetTextL(_L("909090"));
TDateTime dateTime;
TInt year=1996, month=12, day=31;
dateTime.Set(year,TMonth(month-1),day-1,0,0,0,0);
fieldInfo = engine->FieldsInfo().Find(EPbkFieldIdDate);
contact->AddFieldL(*fieldInfo);
field = contact->FindField(EPbkFieldIdDate ); //生日
field->DateTimeStorage()->SetTime(dateTime);
fieldInfo = engine->FieldsInfo().Find(EPbkFieldIdNote);
contact->AddFieldL(*fieldInfo);
field = contact->FindField(EPbkFieldIdNote ); //备注
field->TextStorage()->SetTextL(_L("12121212"));
//fieldInfo = engine->FieldsInfo().Find(EPbkFieldIdVoiceTagIndication);
//contact->AddFieldL(*fieldInfo);
//field = contact->FindField(EPbkFieldIdVoiceTagIndication); //
//field->TextStorage()->SetTextL(_L("333333"));
//fieldInfo = engine->FieldsInfo().Find(EPbkFieldIdSpeedDialIndication);
//contact->AddFieldL(*fieldInfo);
//field = contact->FindField( EPbkFieldIdSpeedDialIndication ); //
//field->TextStorage()->SetTextL(_L("444444"));
fieldInfo = engine->FieldsInfo().Find(EPbkFieldIdPersonalRingingToneIndication);
contact->AddFieldL(*fieldInfo);
field = contact->FindField(EPbkFieldIdPersonalRingingToneIndication ); //来电铃声
field->TextStorage()->SetTextL(_L("098765"));
fieldInfo = engine->FieldsInfo().Find(EPbkFieldIdPOBox);
contact->AddFieldL(*fieldInfo);
field = contact->FindField(EPbkFieldIdPOBox); //邮政信箱
field->TextStorage()->SetTextL(_L("999888"));
fieldInfo = engine->FieldsInfo().Find(EPbkFieldIdExtendedAddress);
contact->AddFieldL(*fieldInfo);
field = contact->FindField(EPbkFieldIdExtendedAddress ); //地址详情
field->TextStorage()->SetTextL(_L("999777"));
fieldInfo = engine->FieldsInfo().Find(EPbkFieldIdStreetAddress);
contact->AddFieldL(*fieldInfo);
field = contact->FindField(EPbkFieldIdStreetAddress ); //街道
field->TextStorage()->SetTextL(_L("999666"));
//fieldInfo = engine->FieldsInfo().Find(EPbkFieldIdWVID);
//contact->AddFieldL(*fieldInfo);
//field = contact->FindField(EPbkFieldIdWVID ); //
//field->TextStorage()->SetTextL(_L("999555"));
fieldInfo = engine->FieldsInfo().Find(EPbkFieldIdSecondName);
contact->AddFieldL(*fieldInfo);
field = contact->FindField(EPbkFieldIdSecondName ); //昵称
field->TextStorage()->SetTextL(_L("999444"));
fieldInfo = engine->FieldsInfo().Find(EPbkFieldIdPhoneNumberVideo);
contact->AddFieldL(*fieldInfo);
field = contact->FindField(EPbkFieldIdPhoneNumberVideo ); //可视电话
field->TextStorage()->SetTextL(_L("999000"));
fieldInfo = engine->FieldsInfo().Find(EPbkFieldIdPostalCode);
contact->AddFieldL(*fieldInfo);
field = contact->FindField(EPbkFieldIdPostalCode ); //邮政编码
field->TextStorage()->SetTextL(_L("111333"));
fieldInfo = engine->FieldsInfo().Find(EPbkFieldIdCity);
contact->AddFieldL(*fieldInfo);
field = contact->FindField(EPbkFieldIdCity); //城市
field->TextStorage()->SetTextL(_L("222333"));
fieldInfo = engine->FieldsInfo().Find(EPbkFieldIdState);
contact->AddFieldL(*fieldInfo);
field = contact->FindField( EPbkFieldIdState ); //省/区/县
field->TextStorage()->SetTextL(_L("444333"));
fieldInfo = engine->FieldsInfo().Find(EPbkFieldIdCountry);
contact->AddFieldL(*fieldInfo);
field = contact->FindField(EPbkFieldIdCountry ); //国家或地区
field->TextStorage()->SetTextL(_L("333555"));
TContactItemId Id = engine->AddNewContactL(*contact);//修改后结果添加到数据库中,并返回这个通信录项的id,可以以后使用
CleanupStack::PopAndDestroy(contact);
CleanupStack::PopAndDestroy(engine);
}
//导出的vcard信息
//BEGIN:VCARD
//VERSION:2.1
//REV:20090721T054256Z
//END:VCARD
//BEGIN:VCARD
//VERSION:2.1
//REV:20090721T060823Z
//N:Chai;King;;;
//ADR:999888;999777;999666;222333;444333;111333;333555
//ORG:123456;
//TITLE:999999
// TEL;CELL:13777777777
// TEL;VOICE:111111
// TEL;VIDEO:999000
// TEL;FAX:444444
// TEL;PAGER:555555
// EMAIL;INTERNET:666666
// TEL;VOICE;HOME:222222
// TEL;VOICE;WORK:333333
//LABEL:789012
//URL:888888
//BDAY:19961231
//NOTE:12121212
// X-EPOCSECONDNAME:999444
//END:VCARD
其中EPbkFieldIdVoiceTagIndication,EPbkFieldIdSpeedDialIndication,EPbkFieldIdWVID, engine->FieldsInfo().Find()时返回的是一个空指针;而且上述所列的部分枚举值在s60的名片夹里是重复的项目,显示会相互覆盖,例如:EPbkFieldIdPostalAddress,EPbkFieldIdCompanyAddress等,但是在VCARD的信息表明实际数据是没有覆盖的。
还有部分pbkfields.hrh里的枚举值暂时没有研究,在这里粘贴出来,希望有知道的能告知一二:
#define | EPbkFieldIdLastNameReading 0x21 |
#define | EPbkFieldIdFirstNameReading 0x22 |
#define | EPbkFieldIdLocationIdIndication 0x23 |
#define | EPbkFieldIdVOIP 0x24 |
#define | EPbkFieldIdPushToTalk 0x25 |
#define | EPbkFieldIdShareView 0x26 |
#define | EPbkFieldIdSIPID 0x27 |
#define | EPbkFieldIdCodTextID 0x28 |
#define | EPbkFieldIdCodImageID 0x29 |
#define | EPbkFieldIdPrefix 0x30 |
#define | EPbkFieldIdSuffix 0x31 |
#define | KPbkFieldIdMask 0xff |
#define | EPbkFieldGroupIdNone 0x00 |
#define | EPbkFieldGroupIdPostalAddress 0x01 |
#define | EPbkFieldGroupIdHomeAddress 0x02 |
#define | EPbkFieldGroupIdCompanyAddress 0x03 |
#define | EPbkFieldGroupIdFirstName 0x04 |
#define | EPbkFieldGroupIdLastName 0x05 |
以上是自己做名片夹方面的工作时辛苦测试出来的,在这里和大家分享一下,希望能让大家节省一点时间,转载请注明出处,谢谢!