获取通讯录中所有联系人的信息

获取通讯录中所有联系人的信息。


类成员
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);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值