在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,其中包含一些指导文件,但需要运行文档程序。
此文为开发视界翻译转载者请注明出处否则追究法律责任 |