3,119
社区成员




{
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;
}
{
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
}
{
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:
CContactItem* contact = CContactCard::NewLC();
CContactItemField* field = CContactItemField::NewLC(KStorageTypeText);
field->AddFieldTypeL(KUidContactFieldJobTitle);
field->SetMapping(KUidContactFieldVCardMapTITLE);
field->TextStorage()->SetTextL(*tempValue);
contact->AddFieldL(*field);
CleanupStack::PopAndDestroy(2);
}
{
// Add the new contact to the database and set it as the own card:
TContactItemId contactId = contactsDb->AddNewContactL(*contact);
contactsDb->SetOwnCardL(*contact);
contactsDb->CloseContactL(contactId);
}