Symbian 网络接入点常用编程方法
2010-03-15 15:48:00 来源:WEB开发网从CommDb中获取接入点信息:
CCommsDatabase* commsDB=CCommsDatabase::NewL(EDatabaseTypeIAP);
CCommsDbTableView* table= commsDB->OpenIAPTableViewMatchingBearerSetLC(
ECommDbBearerGPRS|ECommDbBearerWLAN, //GPRS和无线局域网
ECommDbConnectionDirectionOutgoing); //方向无所谓的,写Unknown也可以
User::LeaveIfError(table->GotoFirstRecord()); //转到第一条记录
TInt err = KErrNone;
do
{
TBuf<32> name;
TUint32 id;
table->ReadTextL(TPtrC(COMMDB_NAME), name); //获取当前接入点的名称
table->ReadUintL(TPtrC(COMMDB_ID), id); //获取当前接入点的IapId
… //do something
err = table->GotoNextRecord(); //转到下一条记录
}
while (err == KErrNone);
以上代码演示了如何遍历接入点列表,实现方式比较直接,我们也可以使用另一个包装好的类CApSelect来实现:
CCommsDatabase* CommDb = CCommsDatabase::NewL(EDatabaseTypeIAP);
CApSelect* ApSelect = CApSelect::NewLC(*CommDb, KEApIspTypeAll ,EApBearerTypeAll ,KEApSortUidAscending); //指定了ISP类型和Bearer类型,以及排序规则
if (ApSelect->MoveToFirst())
{
do
{
TPtrC a = ApSelect->Name(); //接入点名称
TUint uid = ApSelect->Uid(); //接入点IapId
//put here your IAP stuff
}
while(ApSelect->MoveNext()); //下一条记录
}
弹框让用户选择接入点
单纯是让用户选择使用哪个接入点,可以借助RConnection类搞定:
RSocketServ iSocketServ; // data member
RConnection iConnection; // data member
User::LeaveIfError(iSocketServ.Connect());
User::LeaveIfError(iConnection.Open(iSocketServ));
TCommDbConnPref connectPref;
connectPref.SetDialogPreference(ECommDbDialogPrefPrompt); //提示用户
connectPref.SetBearerSet(ECommDbBearerWLAN | ECommDbBearerGPRS);
更多精彩
赞助商链接