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

Symbian os 通讯录引擎

 2010-03-11 16:13:00 来源:WEB开发网   
核心提示:CleanupStack:: PushL(result);for(TInt i=0; iCount(); i++){TContactItemId cardId = (*result)[i];CContactItem* ownCard = iContactsDb ->OpenContactL(cardId);Cle

CleanupStack:: PushL(result);

for(TInt i=0; iCount(); i++)

{

TContactItemId cardId = (*result)[i];

CContactItem* ownCard = iContactsDb ->OpenContactL(cardId);

CleanupStack::PushL(ownCard);

TInt index =

ownCard->CardFields().Find(KUidContactFieldGivenName);

ownCard->CardFields()[index].TextStorage()->SetTextL(KOtherForename);

//提交所做的修改,如果这里不做更改可以调用CloseContactL直接关闭

//但是一旦用OpenContactL或OpenContactLX打开就必须调用两者之一关闭

iContactsDb ->CommitContactL(*ownCard);

CleanupStack::PopAndDestroy();// ownCard

}

CleanupStack::PopAndDestroy();//result;

}

}

CleanupStack::PopAndDestroy(3);// iContactsDb、iFieldDef、iFinder

例6、 导出所选通讯录条目到文件(vCard)

在这里,主要使用CContactDatabase类中ExportSelectedContactsL函数,关于该函数的定义可以查看SDK文档;而且在这里与前次遍历不一样的是,加了一个过滤器CCntFilter类,虽然取法仍然是所有通讯条目,但做法不一样,具体例程如下:

RFs fileSession;

//连接文件服务器

User::LeaveIfError(fileSession.Connect());

CleanupClosePushL(fileSession); //1

//打开默认数据库

CContactDatabase* contactDb = CContactDatabase::OpenL();

CleanupStack::PushL(contactDb); //2

//新建过滤器

CCntFilter* filter = CCntFilter::NewLC(); //3

filter->SetContactFilterTypeALL(EFalse);

//按vCard格式导出

filter->SetContactFilterTypeCard(ETrue);

//安装filter

contactDb->FilterDatabaseL(*filter);

//取出满足条件的记录数据项数组

CContactIdArray* exportContact = CContactIdArray::NewL(filter->iIds);

CleanupStack::PushL(exportContact); //4

RFile file;

//新建文件,aFileName是文件名字

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

Tags:Symbian os 通讯录

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