欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

symbian名片夹里添加联系人信息的有关问题

更新时间: 2014-01-05 02:40:34 责任编辑: Author_N1

 

symbian名片夹里添加联系人信息的问题
我自己写了几个函数实现添加联系人和读取联系人信息的功能,需要的信息主要有姓名、手机、家庭固定电话、工作固定电话、职位……内容,现在已经能够够实现将所有内容写入名片夹中,而且在写完之后直接读是没有问题的,但是当后来再调用读取联系人信息的程序读取时,职位跟工作固定电话的内容却无法读取出来,实在搞不懂是怎么回事了哦~~
添加联系人信息的代码:

{
CContactDatabase* contactsDb = CContactDatabase::OpenL();
CleanupStack::PushL(contactsDb);
CContactItem* newItem = contactsDb->CreateOwnCardL();
CleanupStack::PushL(newItem);
TInt fieldIndex = newItem->CardFields().Find(KUidContactFieldVCardMapWORK);
if(fieldIndex != -1)
    {
    newItem->CardFields()[fieldIndex].TextStorage()->SetTextL(*tempValue);
    TBuf<XF_MAX_ADDRESSBOOKITEM_LEN> temptName;
    temptName = modifiableItem->CardFields()[fieldIndex].TextStorage()->Text().Left(11);   //temptName可以正确读出
    }
TContactItemId contactId = contactsDb->AddNewContactL(*newItem);
contactsDb->CloseContactL(contactId);
CleanupStack::PopAndDestroy(); //newItem
CleanupStack::PopAndDestroy(); //contactsDb
return contactId;
}

/*注:TUid KUidContactFieldVCardMapWORK={KIntContactFieldVCardMapWORK};
*    TPtrC16* tempValue是要写入的电话号码值
*/
添加职位的代码与以上代码类似,只不过field的名称改为:KUidContactFieldJobTitle(TUid KUidContactFieldJobTitle={KUidContactFieldJobTitleValue};)

读取联系人信息的代码如下:

{
CContactDatabase* contactsDb = CContactDatabase::OpenL();
CleanupStack::PushL(contactsDb);
CContactItem* card = contactsDb->ReadContactL(contactId);
CleanupStack::PushL(card);
TInt location = card->CardFields().Find(KUidContactFieldVCardMapWORK);
if(location != KErrNotFound)
    {
    workNumber = card->CardFields()[location].TextStorage()->Text().Left(11);
    }
contactsDb->CloseContactL(card->Id());
CleanupStack::PopAndDestroy(); // card
CleanupStack::PopAndDestroy(); // contactsDb
}

/*注:contactId为上面添加联系人后返回的Id号码*/
读取职位的代码与以上代码类似,也是要把field名称改为KUidContactFieldJobTitle
------最佳解决方案--------------------
有报错信息么?
------其他解决方案--------------------
这个我也碰到过,实在搞不清楚是怎么回事
------其他解决方案--------------------
mark
------其他解决方案--------------------
感谢各位的关注,我实在搞不懂是什么问题了,所以干脆将写入名片夹的方式给全改了,现在已经没问题了~~~~
下面附上写入的代码,希望对大家有所帮助:
插入工作电话号码的代码:

{
CContactDatabase* contactsDb = CContactDatabase::OpenL();
CleanupStack::PushL(contactsDb);
// Create a contact card and add some fields:
CContactItem* contact = CContactCard::NewLC();
CContactItemField* field = CContactItemField::NewLC(KStorageTypeText);
field->AddFieldTypeL(KUidContactFieldPhoneNumber);      //插入工作固定电话需要两个field type值
field->SetMapping(KUidContactFieldVCardMapTEL);
field->AddFieldTypeL(KIntContactFieldVCardMapWORK);
field->SetMapping(KUidContactFieldVCardMapTEL);
field->TextStorage()->SetTextL(*tempValue);
contact->AddFieldL(*field);
CleanupStack::PopAndDestroy(2);
}

插入职位的代码:

{
CContactDatabase* contactsDb = CContactDatabase::OpenL();
CleanupStack::PushL(contactsDb);
// Create a contact card and add some fields:
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:40:34
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/12990/
本文WWW.DOC100.NET DOC100.NET版权所有。