sysbian 通訊錄的字段的讀取和查找

下面是增加和查找的例子,需要加上頭文件和在mmp裏面加上響應的能力和lib,可以到網上找下

增加例子:

TBool CInformationSynView::AddContactItem()
 {
 _LIT(KFName,"kkkkk");
 _LIT(KLName,"kkkkk");
 _LIT(KNumber,"13777777778");
 
 _LIT(QKUidContactFieldGivenName,"1111");
 _LIT(QKUidContactFieldFamilyName,"2222");
 _LIT(QKUidContactFieldCompanyName,"3333");
 _LIT(QKUidContactFieldJobTitle,"4444");
 _LIT(QKUidContactFieldPhoneNumber,"5555");
 _LIT(QKUidContactFieldFax,"6666");
 _LIT(QKUidContactFieldSIPID,"7777");
 _LIT(QKUidContactFieldEMail,"8888");
 //運用引擎打開默認通訊錄
 CPbkContactEngine* iPbkContactEngine = CPbkContactEngine::NewL();

 //新建一空通信錄項
 CPbkContactItem* contact = iPbkContactEngine->CreateEmptyContactL();
 CleanupStack::PushL(contact); //2
 //設置first name 域
 TPbkContactItemField* field = contact->FindField(EPbkFieldIdFirstName);
 
 field->TextStorage()->SetTextL(QKUidContactFieldGivenName); 
 //設置last name域//2222
 field = contact->FindField(EPbkFieldIdLastName);
 field->TextStorage()->SetTextL(QKUidContactFieldFamilyName);
 
 //設置CompanyName  域//3333
 field = contact->FindField(EPbkFieldIdCompanyName);
 field->TextStorage()->SetTextL(QKUidContactFieldCompanyName);
 
 //設置JobTitle 域//4444
 field = contact->FindField(EPbkFieldIdJobTitle);
 field->TextStorage()->SetTextL(QKUidContactFieldJobTitle);
 
 //設置PhoneNumberMobile //5555
 field = contact->FindField(EPbkFieldIdPhoneNumberMobile);
 field->TextStorage()->SetTextL(QKUidContactFieldPhoneNumber);
 
 //設置Fax 域//6666
 field = contact->FindField(EPbkFieldIdFaxNumber);
 field->TextStorage()->SetTextL(QKUidContactFieldFax);
 
 //設置IdSIPID 域//7777
// field = contact->FindField(EPbkFieldIdSIPID);
// if(field!=NULL){
//  field->TextStorage()->SetTextL(QKUidContactFieldSIPID);
// }

 //設置QKUidContactFieldEMail//8888
 field = contact->FindField(EPbkFieldIdEmailAddress);
 field->TextStorage()->SetTextL(QKUidContactFieldEMail);
 
 //可以添加其他值域
 //...
 //修改後結果添加到數據庫中,並返回這個通信錄項的id,該id可以以後使用
 TContactItemId Id = iPbkContactEngine->AddNewContactL(*contact);
 CleanupStack::PopAndDestroy(contact);
 return ETrue;
}

 

 

 

查找的例子

TBool CInformationSynView::SearchContactItem()
 {//const TDesC& aTelephoneNumber

 _LIT(GivenName,"1111");
 _LIT(FamilyName,"2222");
 _LIT(PhoneNumber,"5555");
 
 TBuf<64> givenname(GivenName);
 TBuf<64> familyname(FamilyName);
 TBuf<64> phonenumber(PhoneNumber);

 CContactDatabase* contactsDb = CContactDatabase::OpenL();
 CleanupStack::PushL(contactsDb);
  
 CPbkContactEngine* iPbkContactEngine1 = CPbkContactEngine::NewL();
 CleanupStack::PushL(iPbkContactEngine1);
 
 CContactIdArray* contactIdArray =iPbkContactEngine1-> MatchPhoneNumberL(phonenumber,phonenumber.Length());
 CleanupStack::PushL(contactIdArray);
 TInt matchnumber=contactIdArray->Count();
// iPbkContactEngine1->MContactDbObserver
 if (contactIdArray->Count() > 0)
 {
  for(TInt i=0; i<matchnumber; i++)
  {
   TContactItemId ownCardId = (*contactIdArray)[i];
   CContactItem* ownCard=contactsDb->ReadContactL(ownCardId);
   CleanupStack::PushL(ownCard);
   CContactItemFieldSet& currentFieldSet =ownCard->CardFields();
   TInt GivenNameFieldId=currentFieldSet.Find(KUidContactFieldGivenName);
   TInt FamilyNameFieldId=currentFieldSet.Find(KUidContactFieldFamilyName);
   if( GivenNameFieldId!=KErrNotFound && FamilyNameFieldId!=KErrNotFound )
   {   //讀出數據
    TPtrC name =ownCard->CardFields()[GivenNameFieldId].TextStorage()->Text();
    TPtrC fName =ownCard->CardFields()[FamilyNameFieldId].TextStorage()->Text();
    TInt nint=givenname.CompareC(name);
    TInt fint=familyname.CompareC(fName);
    if(nint!=0&&fint!=0){
     return AddContactItem();
    }
   }
   CleanupStack::PopAndDestroy(ownCard);
  }
 }
 delete contactIdArray;
 CleanupStack::PopAndDestroy(contactIdArray);
 CleanupStack::PopAndDestroy(iPbkContactEngine1);
 CleanupStack::PopAndDestroy(contactsDb);
 return EFalse;

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章