读书人

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

发布时间: 2012-12-20 09:53:21 作者: rapoo

遍历通讯录的一个问题?
// 打开默认通讯录数据库
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)
已经解决,判断一下类型。

读书人网 >Symbian

热点推荐