当前位置: 代码迷 >> Symbian >> 遍历通讯录的一个有关问题
  详细解决方案

遍历通讯录的一个有关问题

热度:9507   发布时间:2013-02-26 00:00:00.0
遍历通讯录的一个问题?
// 打开默认通讯录数据库
    CContactDatabase* pDb = CContactDatabase::OpenL();
    if(!pDb)
    {
        return;
    }
    CleanupStack::PushL(pDb);
    
    TContactIter pIter(*pDb);
    TContactItemId cardId;
    TContactItemInfo itemInfo;
    
    // 循环遍历
    while( ( cardId = pIter.NextL() ) != KNullContactId )
    {
        // 读取相应项,这里之所以称其card,就是其实际相当于读一个完整的vCard条目
        // 调用者拥有pCard的Ownship
        CContactItem* pCard = pDb->ReadContactL(cardId);
        if(!pCard)
        {
            continue;
        }
        CleanupStack::PushL(pCard);
     
        // 读取联系人信息
        ...
        
        // 关闭一个联系条目
        pDb->CloseContactL(pCard->Id());
        CleanupStack::PopAndDestroy(pCard); // pCard
    }
    
    CleanupStack::PopAndDestroy(pDb); // pDb 


以上是使用代码,但是在Nokia E52 / Nokia N95 上测试时,多出现二个联系人,联系人的姓名为一大串字母与数字
但是在Nokia 5230上测试的时侯,就没有多出二个联系人的信息。

多出现的联系人的ID(TContactItemId )分别为1,2,其它为331,332...等。

还有我用
CContactItem* pCard

if(!pCard->IsHidden() && !pCard->IsSystem())
进行判断时,还是有那两联系人。


------解决方案--------------------------------------------------------
有没有那们老兄知道啊。
帮自己顶一下。
------解决方案--------------------------------------------------------
if(pCard->Type().iUid & CCntFilter::EContactTemplates)
已经解决,判断一下类型。
  相关解决方案