获取通讯录中所有联系人的信息。
类成员
CPbkContactEngine * iPbkContactEngine;
构造函数中创建
//通讯录
iPbkContactEngine = CPbkContactEngine::NewL();
析构函数中释放
MEM_FREE(iPbkContactEngine);
//初始化所有电话簿的信息
void CControl::InitRecord()
{
//查询所有的记录
_LIT(KEmpty, "");
CContactIdArray* pArrayOfID = iPbkContactEngine->FindLC(KEmpty);
//得到记录总数
TInt nCount = pArrayOfID->Count();
//循环读取每一条记录
TInt i = 0;
for (i = 0; i < nCount; i++)
{
//创建记录变量
CPbkContactItem* pContactItem = iPbkContactEngine->ReadContactLC(
(*pArrayOfID)[i]);
//记录集为空就执行下一条记录
if (pContactItem == NULL)
{
continue;
}
TPbkContactItemField* pCntField;
//得到姓
pCntField = pContactItem->FindField(EPbkFieldIdLastName);
TBuf<50> pFirstName;
if (pCntField)
{
pCntField->GetTextL(pFirstName);
}
else
{
pFirstName.Append(_L(""));
}
//得到名称
pCntField = pContactItem->FindField(EPbkFieldIdFirstName);
TBuf<50> sLastName;
if (pCntField)
{
pCntField->GetTextL(sLastName);
}
else
{
sLastName.Append(_L(""));
}
//得到手机号
pCntField = pContactItem->FindField(EPbkFieldIdPhoneNumberMobile);
TBuf<50> bTel(KNullDesC);
if (pCntField)
{
pCntField->GetTextL(bTel);
}
else
{
bTel.Append(_L(""));
}
//得到电话号码
pCntField = pContactItem->FindField(EPbkFieldIdPhoneNumberStandard);
TBuf<50> bPhone(KNullDesC);
if (pCntField)
{
pCntField->GetTextL(bPhone);
}
else
{
bPhone.Append(_L(""));
}
//创建一条新的元素
CRecord * pRecord = new (ELeave) CRecord;
pRecord->iID = i;
pRecord->iRecordID = pContactItem->Id();
pRecord->iName = HBufC::NewL(pFirstName.Length() + sLastName.Length()
+ 2);
pRecord->iName->Des().Format(_L("%S %S"), &pFirstName, &sLastName);
//如果没有手机号码,就提取电话号码。如果手机电话都没有,则不用管了。
if (0 < bTel.Length())
{
pRecord->iTel = bTel.AllocL();
}
else
{
pRecord->iTel = bPhone.AllocL();
}
//添加到数组中
iAllRecord.Append(pRecord);
//记录集出栈
CleanupStack::PopAndDestroy(pContactItem);
}
CleanupStack::PopAndDestroy(pArrayOfID);
}
获取通讯录中所有联系人的信息
最新推荐文章于 2017-08-08 14:22:19 发布