关于接入点信息的获取问题

imasmallbird 2011-05-30 03:00:43
想要在S60 v5和Symbian^3的机器上面获取接入点信息,但是只能获取到承载方式的前两个接入点的信息,而获取不到全部的接入点的信息,以下是获取接入点的代码:
CCommsDatabase* commsDB = CCommsDatabase::NewL(EDatabaseTypeIAP);
CleanupStack::PushL(commsDB);
CCommsDbTableView* tableIAP =
commsDB->OpenTableLC(TPtrC(OUTGOING_GPRS));
// CleanupStack::PushL(commsDB);

User::LeaveIfError(tableIAP->GotoFirstRecord()); //转到第一条记录

TInt err = KErrNone;

do
{
TBuf<32> apn;
TBuf<32> commdb_name;
TUint32 id;
tableIAP->ReadTextL(TPtrC(GPRS_APN), apn); //获取当前接入点的名称
tableIAP->ReadTextL(TPtrC(COMMDB_NAME), commdb_name);
CRLog::Log(apn);
CRLog::Log(commdb_name);
tableIAP->ReadUintL(TPtrC(COMMDB_ID), id); //获取当前接入点的IapId
if (apn.Compare(_L("cmwap")) == 0)
{
selectIap = id;
break;
}

err = tableIAP->GotoNextRecord(); //转到下一条记录
}
while (err == KErrNone);
CleanupStack::PopAndDestroy(tableIAP); // view
CleanupStack::PopAndDestroy(commsDB); // commDB
...全文
184 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
imasmallbird 2011-06-01
  • 打赏
  • 举报
回复
结贴散分了!
imasmallbird 2011-06-01
  • 打赏
  • 举报
回复
另外,在获取接入点名称的同时,也需要使用楼上说的OpenViewOnProxyRecordLC这个函数取得代理的信息
以cmwap接入点为例:
首先在OUTGOING_GPRS表里查找cmwap接入点信息
CCommsDbTableView* tableIAP =
commsDB->OpenTableLC(TPtrC(OUTGOING_GPRS));
tableIAP->ReadTextL(TPtrC(GPRS_APN), apn); //获取当前接入点的名称
tableIAP->ReadTextL(TPtrC(COMMDB_NAME), commdb_name);
tableIAP->ReadUintL(TPtrC(COMMDB_ID), id); //获取当前接入点的IapId
if (apn.Compare(_L("cmwap")) != 0)
{
err = tableIAP->GotoNextRecord(); //转到下一条记录
continue;
}
然后根据获取到的接入点名称去IAP表中获取IAP ID,并且获取到接入点的serviceId和serviceType,使用OpenViewOnProxyRecordLC这个函数获取到接入点的代理信息。
CCommsDbTableView* view = commsDB->OpenTableLC(TPtrC(IAP));
err = view->GotoFirstRecord();
while (err == KErrNone)
{
view->ReadUintL(TPtrC(COMMDB_ID), id); //接入点ID
view->ReadTextL(TPtrC(COMMDB_NAME), CommDBNamename);//连接名称
view->ReadUintL(TPtrC(IAP_SERVICE), iapService);
view->ReadTextL(TPtrC(IAP_SERVICE_TYPE), serviceType);
if (CommDBNamename.CompareF(commdb_name) == 0)
{
CCommsDbTableView* commsView =
commsDB->OpenViewOnProxyRecordLC(iapService,
serviceType);
proxy.Copy(*commsView->ReadLongTextLC(TPtrC(
PROXY_SERVER_NAME)));
CRLog::Log(proxy);
commsView->ReadUintL(TPtrC(PROXY_PORT_NUMBER), port); //端口
if (proxy.Compare(_L("10.0.0.172")) == 0 && port == 80)
{
selectIap = id;
break;
}
}
err = view->GotoNextRecord();
}
a14776584 2011-06-01
  • 打赏
  • 举报
回复
呵呵 这问题还挺有意思 symbian就麻烦在这些地方 恶心人
imasmallbird 2011-06-01
  • 打赏
  • 举报
回复
找到问题的原因了:在OUTGOING_GPRS表里查找之后
CCommsDbTableView* tableIAP = CommDb->OpenTableLC(TPtrC(OUTGOING_GPRS));
tableIAP->ReadTextL(TPtrC(GPRS_APN),bufApn);
tableIAP->ReadTextL(TPtrC(COMMDB_NAME), Name);
tableIAP->ReadUintL(TPtrC(COMMDB_ID), id);
取得的COMMDB_ID的值并不是实际的IAP的id值,需要使用COMMDB_NAME在IAP表中查找到IAP ID
TBuf<128> CommDBNamename;
CCommsDbTableView* view = CommDb->OpenTableLC(TPtrC(IAP));
int err = view->GotoFirstRecord();
while (err == KErrNone)
{
view->ReadUintL(TPtrC(COMMDB_ID), id); //接入点ID
view->ReadTextL(TPtrC(COMMDB_NAME), CommDBNamename);//连接名称
if (CommDBNamename.CompareF(Name) == 0)
{
temp = id;
break;
}
err = view->GotoNextRecord();
}
CleanupStack::PopAndDestroy(view);
具体参见的地址:
http://blog.csdn.net/linzhiji/archive/2010/07/26/5766332.aspx
imasmallbird 2011-05-31
  • 打赏
  • 举报
回复
感谢楼上的回复,今天研究了半天,发现S60 V5和Symbian^3确实有所不同,使用commsDB->OpenTableLC(TPtrC(OUTGOING_GPRS));取得的id号在V5中是准确的,但是在Symbian^3中是不准确的。
a14776584 2011-05-30
  • 打赏
  • 举报
回复
获取不到全部的接入点的信息楼主可以考虑使用commDb->OpenIAPTableViewMatchingBearerSetLC( ECommDbBearerCSD|ECommDbBearerGPRS|ECommDbBearerWLAN|ECommDbBearerVirtual,
ECommDbConnectionDirectionOutgoing);
“获取到的接入点的IapId和实际的接入点的ID号差了1”应该不至于,可能楼主的手机id为2的接入点信息不完整,建议使用OpenViewOnProxyRecordLC读取出接入点的代理信息,看看PROXY_SERVER_NAME字段是否是移动的wap网关,这样判断更合理些。
imasmallbird 2011-05-30
  • 打赏
  • 举报
回复
问题补充:
在Symbian^3系统中使用
tableIAP->ReadUintL(TPtrC(COMMDB_ID), id); //获取当前接入点的IapId
获取到的接入点的IapId和实际的接入点的ID号差了1,
比如我获取到cmwap的接入点的Id为2,但是我使用connectPref.SetIapId(2);来建立连接的话使用的不是cmwap的接入点,但是我使用Id为3的接入点就可以使用cmwap进行访问。这个问题很奇怪

3,120

社区成员

发帖
与我相关
我的任务
社区描述
塞班系统(Symbian系统)是塞班公司为手机而设计的操作系统,它的前身是英国宝意昂公司的 EP ( Electronic Piece of cheese)操作系统。
社区管理员
  • Symbian社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧