WAP之家:为您提供最全最新的WAP技术,CP.SP.3G等行业资讯。 WAP之家交流论坛全新开放 点击进入>>
WAP资讯 | 3G动态 | SP动态 | 运营商动态 | 内容商动态 | 制造商动态 | 论坛讨论>> 每次自动访问
WAP技术 | WAP源码 | 手机编程 | 手机源码 | 无线技术 | J2ME技术 | 手机软件 添加到收藏夹
IVR技术 | SP资料 | SMS MMS技术 | 商业方案 | IVR下载 | 书籍教程 | 工具软件 语言:繁體中文

WAP之家技术文章手机编程Symbian程序开发用C++实现的访问Symbian手机电话薄

用C++实现的访问Symbian手机电话薄
作者:CSDN  来源:CSDN  发布时间:2006-11-30 22:14:10

在Symbian OS中,电话薄部分是通过一个默认的数据库(contacts.cdb.)来操作和管理的。因此在Symbian系统里可以用联系人模型(Contacts Model)API来访问和管理电话薄,这里主要用的类就是CContactDatabase(数据库类,电话薄所有条目的集合),CContactItem(它代表一个单独的电话薄条目,由唯一的一个TContactItemId标识。例如电话薄中的一个联系人),CContactItemField(域类,每一个电话薄条目有很多类组成,例如姓名域(EPbkFieldIdFirstName,EPbkFieldIdLastName),电话号码域(EPbkFieldIdPhoneNumberGeneral)...).
而Series60开发者则扩展了这一模型,使用“电话薄引擎”;下面是几个关键的类。

Class CPbkContactEngine

电话薄引擎通过CPbkContactEngine来实现。如果已经存在一个缺省数据库,CPbkContactEngine::NewL()就连接到该数据库,否则创建该数据库。

Class CPbkContactItem

CPbkContactItem类代表电话薄数据库中的一个具体条目,例如一个联系人。它提供了对所拥有的TPbkContactItemField数组的访问和查找函数。

Class TPbkContactItemField

TPbkContactItemField是某个电话薄条目的域类,例如某人的电话域,或者某人的电子邮件。

//关于电话薄引擎的具体知识还是参看SDK的help吧。

//呵呵,下面把访问电话薄的一段代码贴出来,希望大家多指正。

void CPhoneEngine::DisplayContactInfoL(MObjectProvider* aMopParent)
{
   
     RPbkViewResourceFile  phonebookResource( *(CEikonEnv::Static())  );

    if ( !phonebookResource.IsOpen())
        {
        phonebookResource.OpenL();
        }

     // Add searching array to parameters
     CContactDatabase::TContactViewFilter filter(CContactDatabase::EPhonable);
     CPbkMultipleEntryFetchDlg::TParams params;
     params.iContactView = &iPbkContactEngine->FilteredContactsViewL( filter );
   
     // Launch fetching dialog
     CPbkMultipleEntryFetchDlg* fetchDlg = CPbkMultipleEntryFetchDlg::NewL( params,  *iPbkContactEngine );
     fetchDlg->SetMopParent( aMopParent ); 
     TInt okPressed = fetchDlg->ExecuteLD();
     CleanupStack::PushL( params.iMarkedEntries );

     if ( okPressed )
      {

        // Get the first selected contacts id array
        const TContactItemId cid = ( *params.iMarkedEntries )[0];
           
        // Open the selected contact using Phonebook engine,
        CPbkContactItem* pbkItem = iPbkContactEngine->ReadContactLC( cid );
  
       //get the first name
        TPbkContactItemField* fnameField = pbkItem->FindField(EPbkFieldIdFirstName);
        fnameField->GetTextL(iFirstName);

      // get the last name  
     TPbkContactItemField* lnameField = pbkItem->FindField(EPbkFieldIdLastName);
     lnameField->GetTextL(iLastName);
  
     // get the General PhoneNumber
     TPbkContactItemField* phoneFieldGeneral = pbkItem->FindField(EPbkFieldIdPhoneNumberGeneral);
        phoneFieldGeneral->GetTextL(iNumberGeneral);

     // get the Mobile PhoneNumber
    TPbkContactItemField* phoneFieldMobile = pbkItem->FindField(EPbkFieldIdPhoneNumberMobile);
     phoneFieldMobile->GetTextL(iNumberMoblie);

     //get the email address
    TBuf<30> emailAddress;
     TPbkContactItemField *eMailField=pbkItem->FindField(EPbkFieldIdEmailAddress);
     eMailField->GetTextL(emailAddress);
  

     // add codes to get other fields you interested in

     //......


     CleanupStack::PopAndDestroy(pbkItem);  // pbkItem, eMailAdd
 }

    //release the resource
    CleanupStack::PopAndDestroy();  // iMarkedEntries
   phonebookResource.Close();    // Close the phonebook view

[] [返回上一页] [打 印]
文章评论

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码