关于接入点信息的获取问题
想要在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
[解决办法]
获取不到全部的接入点的信息楼主可以考虑使用commDb->OpenIAPTableViewMatchingBearerSetLC(ECommDbBearerCSD|ECommDbBearerGPRS|ECommDbBearerWLAN|ECommDbBearerVirtual,
ECommDbConnectionDirectionOutgoing);
“获取到的接入点的IapId和实际的接入点的ID号差了1”应该不至于,可能楼主的手机id为2的接入点信息不完整,建议使用OpenViewOnProxyRecordLC读取出接入点的代理信息,看看PROXY_SERVER_NAME字段是否是移动的wap网关,这样判断更合理些。