Symbian IAP的选择以及接入点的隐藏

Symbian IAP的选择以及接入点的隐藏

 

//选择默认的接入点 aIapType接入点的类型 得到对应的接入点aIapId
void ***Engine::SetDefaultIap(TInt aIapType, TUint32 &aIapId)
{
    
       TBuf<KCommsDbSvrMaxColumnNameLength> apnName;
       TBuf<10> defApn;
       TUint32 fakeIapId;
       aIapId = 0;
       if(aIapType == 0)
              defApn = _L("net");//这里最好写成net,因为联通的卡不是cmnet
       else if(aIapType == 1)
              defApn = _L("wap");//这里最好写成WAP,因为联通的卡不是cmwap
       else if(aIapType == 2)  //模拟器
              defApn = _L("Winsock");

    int temp = -1;
    TBuf<64> Name;
    TUint32 id = 0;

    CCommsDatabase* CommDb = CCommsDatabase::NewL(EDatabaseTypeIAP);
    CleanupStack::PushL(CommDb);

    //先在OUTGOING_GPRS表里查找
    CCommsDbTableView* tableIAP = CommDb->OpenTableLC(TPtrC(OUTGOING_GPRS));
    if (tableIAP->GotoFirstRecord() == KErrNone)
        {
        do
            {
            TBuf<64> bufApn;
            tableIAP->ReadTextL(TPtrC(GPRS_APN),bufApn);
            tableIAP->ReadTextL(TPtrC(COMMDB_NAME), Name);
            tableIAP->ReadUintL(TPtrC(COMMDB_ID), id);
            if (bufApn.FindF(defApn) != -1)
                {
                temp = id;
                break;
                }
            }
        while (tableIAP->GotoNextRecord() == KErrNone);
        }
    CleanupStack::PopAndDestroy(); // view


    TBuf<128> CommDBNamename;
    //再在IAP表里查找,根据上一个表查到的NAME来查出IAP ID
    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);
    CleanupStack::PopAndDestroy(); // db
   
    //保存取得的IAP ID
    aIapId = temp;
}

//隐藏接入点的对话框

//连接接入点时,不提示用户
TCommDbConnPref pref;
pref.SetIapId(iSelectedIap);
pref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt); //联网时不出现对话框
pref.SetBearerSet(ECommDbBearerPSD);
pref.SetDirection(ECommDbConnectionDirectionOutgoing);
iConnection.Start(pref,iStatus); //异步创建隐藏IAP选择框的网络连接

//将设置的iConnection绑定 在iSession上这样使用iSession的时候就不会弹出对话框了

RHTTPConnectionInfo connInfo = iSession.ConnectionInfo();
RStringPool pool = iSession.StringPool();

// Attach to socket server
connInfo.SetPropertyL(pool.StringF(HTTP::EHttpSocketServ,
            RHTTPSession::GetTable()), THTTPHdrVal(iSocketServ.Handle()));
// Attach to connection
TInt connPtr = REINTERPRET_CAST(TInt, &iConnection);
connInfo.SetPropertyL(pool.StringF(HTTP::EHttpSocketConnection,
            RHTTPSession::GetTable()), THTTPHdrVal(connPtr));

以上代码在N73/N95上测试通过

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值