1.从CommDb中获取接入点信息:
CCommsDatabase* DB=CCommsDatabase::NewL(EDatabaseTypeIAP);
CleanupStack::PushL(DB);
CCommsDbTableView* view= DB->OpenIAPTableViewMatchingBearerSetLC(
ECommDbBearerGPRS|ECommDbBearerWLAN, //GPRS和无线局域网
ECommDbConnectionDirectionOutgoing); //方向无所谓的,写Unknown也可以
User::LeaveIfError(view->GotoFirstRecord()); //转到第一条记录
TInt err = KErrNone;
while (err == KErrNone)
{
TBuf<32> iapName;
TUint32 iapID;
view->ReadTextL(TPtrC(COMMDB_NAME), iapName); //获取当前接入点的名称
view->ReadUintL(TPtrC(COMMDB_ID), iapID); //获取当前接入点的IapId
...
err = view->GotoNextRecord(); //转到下一条记录
}
...
CleanupStack::PopAndDestroy(2);
2.弹框让用户选择接入点
RSocketServ iSocketServ;
RConnection iConnection;
User::LeaveIfError(iSocketServ.Connect());
User::LeaveIfError(iConnection.Open(iSocketServ));
TCommDbConnPref connectPref;
connectPref.SetDialogPreference(ECommDbDialogPrefPrompt); //提示用户
connectPref.SetBearerSet(ECommDbBearerWLAN | ECommDbBearerGPRS);
User::LeaveIfError(iConnection.Start(connectPref)); //同步函数,会弹出框来等待用户选择哪个接入点
//此时就建立了连接
3.不经用户确认进行连接
首先要遍历CommDb,手工创建ListBox让用户选择并记录IapId。
得到了用户希望使用的接入点的IapId之后,就可以在需要的时候不经用户确认直接建立连接了:
TCommDbConnPref connectPref;
connectPref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt); //不提示用户
connectPref.SetIapId(aIapId); //这行必须要有,如果不设置IapId的话,不管上一行设置提示还是不提示,iConnection.Start(connectPref)的时候都会弹框
connectPref.SetBearerSet(ECommDbBearerWLAN | ECommDbBearerGPRS);
User::LeaveIfError(iConnection.Start(connectPref)); //设置过IapId之后,就不会弹框了
//连接建立完毕
4.修改接入点设置
接下来再说说如何修改接入点设置
使用类:CApSettingsHandler
CApSettingsHandler* settingsHandler = CApSettingsHandler::NewLC(
EFalse,
EApSettingsSelListIsListPane,
EApSettingsSelMenuNormal,
KEApIspTypeAll,
EApBearerTypeAll,
KEApSortNameAscending);
TUint32 originallyFocused(IapId);
TUint32 selectedIap(IapId);
// Show the dialog
settingsHandler->RunSettingsL(originallyFocused, selectedIap); //弹出编辑画面,同步函数
博主友情提示:
如您在评论中需要提及如QQ号、电子邮件地址或其他隐私敏感信息,欢迎使用>>博主专用加密工具v3<<处理后发布,原文只有博主可以看到。