关于s60名片夹的专用API里的各类通讯域的枚举

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

以上是自己做名片夹方面的工作时辛苦测试出来的,在这里和大家分享一下,希望能让大家节省一点时间,转载请注明出处,谢谢!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值