WEB开发网
开发学院手机开发Symbian 开发 Symbian os 通讯录引擎 阅读

Symbian os 通讯录引擎

 2010-03-11 16:13:00 来源:WEB开发网   
核心提示:(TContactItemId) 进行操作,该ID 用于访问某个特定的通信录项,Symbian os 通讯录引擎(4),// Open the default contacts database:CContactDatabase* contactsDb = CContactDatabase::OpenL();Clean
(TContactItemId) 进行操作,该ID 用于访问某个特定的通信录项。

// Open the default contacts database:

CContactDatabase* contactsDb = CContactDatabase::OpenL();

CleanupStack::PushL(contactsDb);

TContactIter iter(*contactsDb);

TContactItemId cardId;

//循环遍历

while( ( cardId = iter.NextL() ) != KNullContactId )

{

//读取相应项,这里之所以称其card,就是其实际相当于读一个完整的vCard条目

CContactItem* card = contactsDb->ReadContactL(cardId);

CleanupStack::PushL(card);

//添加自己功能代码

//……

contactsDb->CloseContactL(card->Id());

CleanupStack::PopAndDestroy(); // card

}

CleanupStack::PopAndDestroy(); // contactsDb

例5、 查找并更新通讯录条目

这个例子比较复杂,涉及的查找函数为FindAsyncL,该类函数实例有:

CContactIdArray * CContactDatabase::FindLC(const TDesC &aText, const CContactItemFieldDef *aFieldDef);

CIdleFinder * CContactDatabase::FindAsyncL(const TDesC &aText, const CContactItemFieldDef *aFieldDef, MIdleFindObserver *aObserver);

还有对应的FindInTextDefLC()和FindInTextDefAsyncL()各两组,具体参见sdk

下面是具体代码实例:

CContactDatabase* iContactsDb = CContactDatabase::OpenL();

CleanupStack::PushL(iContactsDb);

CContactItemFieldDef* iFieldDef = new (ELeave)CContactItemFieldDef();

CleanupStack::PushL(iFieldDef);

iFieldDef->AppendL(KUidContactFieldGivenName);

iFieldDef->AppendL(KUidContactFieldFamilyName);

_LIT(KFindToken, "Bond");

CIdleFinder * iFinder = iContactsDb->FindAsyncL( KFindToken, iFieldDef, this);

CleanupStack::PushL(iFinder);

if(iFinder->IsComplete())

{

if(iFinder->Error() == KErrNone)

{

CContactIdArray* result = iFinder->TakeContactIds();

上一页  1 2 3 4 5 6 7 8  下一页

Tags:Symbian os 通讯录

编辑录入:coldstar [复制链接] [打 印]
赞助商链接