开发电话本应用的时候,时常会需要直接拨打对方的电话号码。 那么,如何在symbian s60平台上通过代码让自己的手机拨号呢? 下面的代码可能会帮助你的: 加入头文件: #include <etel.h> // for dial operatons 在mmp文件中需要加入: LIBRARY etel.lib // for dial operations TBool CMcAppUi::dialTel(TDesC & telNum) { _LIT(KPHONE_DRV, "phonetsy.tsy") ; //Create a connection to the tel server RTelServer server; CleanupClosePushL(server); User::LeaveIfError(server.Connect()); //Load in the phone device driver User::LeaveIfError(server.LoadPhoneModule(KPHONE_DRV)); //Find the number of phones available from the tel server TInt numberPhones; User::LeaveIfError(server.EnumeratePhones(numberPhones)); //Check there are available phones if (numberPhones < 1) { User::Leave(KErrNotFound); } //Get info about the first available phone RTelServer::TPhoneInfo info; User::LeaveIfError(server.GetPhoneInfo(0, info)); //Use this info to open a connection to the phone, the phone is identified by its name RPhone phone; CleanupClosePushL(phone); User::LeaveIfError(phone.Open(server, info.iName)); //Get info about the first line from the phone RPhone::TLineInfo lineInfo; User::LeaveIfError(phone.GetLineInfo(0, lineInfo)); //Use this to open a line RLine line; CleanupClosePushL(line); User::LeaveIfError(line.Open(phone, lineInfo.iName)); //Open a new call on this line TBuf <100> newCallName; RCall call; CleanupClosePushL(call); User::LeaveIfError(call.OpenNewCall(line, newCallName)); //newCallName will now contain the name of the call User::LeaveIfError(call.Dial(telNum)); //Close the phone, line and call connections and remove them from the cleanup stack //NOTE: This does not hang up the call CleanupStack::PopAndDestroy(3);//phone, line, call //Unload the phone device driver User::LeaveIfError(server.UnloadPhoneModule(KPHONE_DRV)); //Close the connection to the tel server and remove it from the cleanup stack CleanupStack::PopAndDestroy(&server); return ETrue ; } 这段代码很好用的,在多款s60真机上测试过 |