从CommDb中获取接入点信息: CCommsDatabase* commsDB=CCommsDatabase::NewL(EDatabaseTypeIAP); TInt err = KErrNone; 以上代码演示了如何遍历接入点列表,实现方式比较直接,我们也可以使用另一个包装好的类CApSelect来实现: CCommsDatabase* CommDb = CCommsDatabase::NewL(EDatabaseTypeIAP); if (ApSelect->MoveToFirst()) 弹框让用户选择接入点 单纯是让用户选择使用哪个接入点,可以借助RConnection类搞定: RSocketServ iSocketServ; // data member User::LeaveIfError(iSocketServ.Connect()); TCommDbConnPref connectPref; User::LeaveIfError(iConnection.Start(connectPref)); //同步函数,会弹出框来等待用户选择哪个接入点此时就建立了连接。 此处是选择接入点和建立连接一起绑定进行的,如果我们在选择接入点后并不是马上进行连接,该怎么实现呢?向下看。 显示缺省接入点设置&不经用户确认进行连接 显示缺省的接入点设置就是调出真机中设置-连接-接入点 中具体某个接入点的显示画面。用户可以根据现实来选择不同的接入点。得到了用户希望使用的接入点的IapId之后,就可以在需要的时候不经用户确认直接建立连接了: CActiveApDb* aDb = CActiveApDb::NewL(); CleanupStack::PushL(aDb); CApSettingsHandler* settings = CApSettingsHandler::NewLC( *aDb, ETrue, EApSettingsSelListIsPopUp, EApSettingsSelMenuSelectNormal, KEApIspTypeAll, bearerFilter, KEApSortNameAscending, 0, EVpnFilterBoth, ETrue); TInt iapRet = settings->RunSettingsL(0, iSelectedIap); //保存选择的接入点存到 iSelectedIap中 CleanupStack::PopAndDestroy(settings); CleanupStack::PopAndDestroy(aDb); if (iapRet != KApUiEventSelected) { // Exit no selection User::Leave(KErrNotReady); } else { // IAP Selected,根据选择的接入点进行连接 // Open socket server and start the connection User::LeaveIfError(iSocketServ.Connect()); User::LeaveIfError(iConnection.Open(iSocketServ)); // Now we have the iap Id. Use it to connect for the connection TCommDbConnPref connectPref; // Setup preferences connectPref.SetDialogPreference(ECommDbDialogPrefPrompt); // Sets the CommDb ID of the IAP to use for this connection connectPref.SetIapId(iSelectedIap); // Start connection User::LeaveIfError(iConnection.Start(connectPref)); ... } 完全可以把上面的代码分成两个部分来实现选择接入点和建立连接的分离。即建立连接的代码如下: // IAP Selected,根据选择的接入点进行连接 // Open socket server and start the connection User::LeaveIfError(iSocketServ.Connect()); User::LeaveIfError(iConnection.Open(iSocketServ)); // Now we have the iap Id. Use it to connect for the connection TCommDbConnPref connectPref; // Setup preferences connectPref.SetDialogPreference(ECommDbDialogPrefPrompt); // Sets the CommDb ID of the IAP to use for this connection connectPref.SetIapId(iSelectedIap); // Start connection User::LeaveIfError(iConnection.Start(connectPref)); MTM方式下屏蔽系统接入点的做法
void GetCMWAPID() |
Symbian网络接入点常用编程
最新推荐文章于 2024-03-18 21:21:29 发布
Symbian网络接入点常用编程
2009-05-14 19:04