首 页 | 新 闻 | Symbian | Windows Mobile| J2ME | 下载中心 | 游戏策划 | 购书指南 | 移动开发视频教程
您现在的位置: 开发视界 >> 专家专栏 >> 新鲜的Lychee >> 文章正文
在P800/P910中找回已拨打号码
作者:lychee08…    文章来源:本站原创    更新时间:2006-7-21 8:58:05

在UIQ设备中找回拨打号码的文章已经有了很长一段时间。也有很多的开发人员的帖子,抱怨在当前呼叫时查讯拨打的号码会返回空值。

所以这里介绍一些关于获得当前呼叫的已拨打号码。代码的模块版本只是针对这篇文章。我提供了模块化和非模块化两种版本。只有非模块化运行在手机上,代码自行解释。
void CExampleAppUi::GetRemotePartyNumber()
{
        TApaTaskList iTaskList(CEikonEnv::Static()->WsSession());       
        const TUid KUiduiqCall = { 0x101F6163 };
        TApaTask iThisTask = iTaskList.FindApp(KUiduiqCall);

        RAdvGsmPhone iPhone;
        RTelServer iServer;
        RTelServer::TPhoneInfo iPhoneInfo;
        RPhone::TLineInfo iLineInfo;
        RCall::TStatus iCallStatus;
        RAdvGsmCall iCall;
        RLine iLine;
        TRequestStatus iStatus;

        iServer.Connect();
        iServer.LoadPhoneModule( KGsmModuleName );
        TInt enumphone;
        User::LeaveIfError(iServer.EnumeratePhones(enumphone));
        if (enumphone < 1) {
                   User::Leave(KErrNotFound);
        }
        //Initialise the phone object
        User::LeaveIfError(iServer.GetPhoneInfo(0, iPhoneInfo));
        User::LeaveIfError(iPhone.Open(iServer, iPhoneInfo.iName));
        User::LeaveIfError(iPhone.GetLineInfo(0,iLineInfo));
        User::LeaveIfError(iLine.Open(iPhone,iLineInfo.iName));
       
        iStatus = KRequestPending;
        //first send the app to the background
        iThisTask.SendToBackground();
       
        iLine.NotifyStatusChange(iStatus, iCallStatus);
        User::WaitForRequest(iStatus);
        if(iStatus.Int()==KErrNone){
                switch(iCallStatus){
                        case RCall::EStatusDialling :
                        {
                                //come to the foreground
                                iThisTask.BringToForeground();
                                //now get the number of the present call
                                 RLine::TLineInfo lineInfo;
                             iLine.GetInfo(lineInfo);
                              iCall.OpenExistingCall(iLine, lineInfo.iNameOfLastCallAdded);
                              TBuf<20> myDialedNumber;
                              TBuf<20> myRemoteNumber;
                                RAdvGsmCall::TDialledNumberInfo myDialedNumberInfo;
                                RAdvGsmCall::TRemotePartyInfo myRemoteNumberInfo;
                                iCall.GetDialledNumberInfo(myDialedNumberInfo);
                                iCall.GetRemotePartyInfo(myRemoteNumberInfo);
                                myDialedNumber = myDialedNumberInfo.iNumber.iTelNumber;
                                myRemoteNumber = myRemoteNumberInfo.iNumber.iTelNumber;
                              iCall.HangUp();                               
                                CEikonEnv::InfoWinL(_L("Dialed number : "),myDialedNumber);
                                CEikonEnv::InfoWinL(_L("Remote party number : "),myRemoteNumber);

                      }
                        break;
                }
        }
        //cleanup stuff ,close all sessions        
        iCall.Close();
        iLine.Close();
        iPhone.Close();
        iServer.UnloadPhoneModule(KGsmModuleName);
        iServer.Close();

}

请阅读文档程序里提供的readme.txt,其中包含一些指导文件,但需要运行文档程序。

此文为开发视界翻译转载者请注明出处否则追究法律责任

相关文章:
利用 RSocket::Read() 函数读取给定数据的字节数
不可能的任务:获得位置字符串
编程IrComm3 原始通信
虚拟机模型
Symbian sdk帮助-类TDes8
Graphics(5)