Symbian OS通讯录模型
2010-08-11 12:18:00 来源:WEB开发网CContactDatabase* contactsDb = CContactDatabase::OpenL();
CleanupStack::PushL(contactsDb);
TInt numberOfContacts = contactsDb->CountL();
CleanupStack::PopAndDestroy(contactsDb);
例2 创建数据库
CContactDatabase::CreateL()、CContactDatabase::ReplaceL()。CContactDatabase::CreateL()与
CContactDatabase::ReplaceL()函数之间的唯一差别就是:如果该数据库已经存在,前者会以KErrAlreadyExists退出。如前所述,如果没有定义参数,这些函数将创建一个默认的数据库。
TFileName contactDbFilePath(_L("C:\system\data\Contacts.cdb"));
CContactDatabase* newDefaultContactDb;
if (CContactDatabase::FindContactFile(contactDbFilePath))
newDefaultContactDb = CContactDatabase::ReplaceL();
else
newDefaultContactDb = CContactDatabase::CreateL();
CleanupStack::PushL(newDefaultContactDb);
CleanupStack::PopAndDestroy(newDefaultContactDb);
例3 读取(遍历)通讯录条目
可以用TContactIter类(该类起到数据库操作中类似游标的作用)来遍历一个通信录数据库。这个类提供了一整套的函数,用于遍历所有的通信录项。所有的函数都用通信录项ID (TContactItemId) 进行操作,该ID用于访问某个特定的通信录项。
CContactDatabase* contactsDb = CContactDatabase::OpenL();
CleanupStack::PushL(contactsDb);
TContactIter iter(*contactsDb);
TContactItemId cardId;
while ((cardId = iter.NextL()) != KNullContactId)
{
CContactItem* card = contactsDb->ReadContactL(cardId);
CleanupStack::PushL(card);
// 添加自己功能代码
contactsDb->CloseContactL(card->Id());
CleanupStack::PopAndDestroy(); // card
}
CleanupStack::PopAndDestroy(); // contactsDb
例4 新建通讯录条目
_LIT(KForenameLabel,"Forename");
_LIT(KSurnameLabel,"Surname");
_LIT(KWorkPhoneLabel,"Work Phone");
更多精彩
赞助商链接