Select Access Point

 // ====>> [Ver 3.01] by Figo.Yang ==========2007/11/14 19:31 ===>>>
 TUint32 cmnetIapId;
 _LIT(APN_CMNET, "cmnet");
 CCommsDatabase *commsDb = CCommsDatabase::NewL(EDatabaseTypeIAP);
 CleanupStack::PushL(commsDb);
 CCommsDbTableView *tableView = commsDb->OpenTableLC(TPtrC(OUTGOING_GPRS));
 TInt err = tableView->GotoFirstRecord();
 while (err == KErrNone)
 {
  TBuf<KCommsDbSvrMaxColumnNameLength> apn;
  tableView->ReadTextL(TPtrC(GPRS_APN), apn);
  apn.LowerCase();
  if (apn.Compare(APN_CMNET) == 0)
  {
   tableView->ReadUintL(TPtrC(COMMDB_ID), cmnetIapId);
   break;
  }
  err = tableView->GotoNextRecord();
 }
 CleanupStack::PopAndDestroy(2, commsDb); // tableView, commsDb

 //////////////////////////////////////////////////////////////////////////
 // some time the iap id is not right. we need to convert it again.
 CCommsDatabase* commDb2 = CCommsDatabase::NewL(EDatabaseTypeIAP);
 CleanupStack::PushL(commDb2);
 CCommsDbTableView* pIAPView = commDb2->OpenViewMatchingUintLC(TPtrC(IAP), TPtrC(IAP_SERVICE), cmnetIapId);
 TInt nErr = pIAPView->GotoFirstRecord();
 if(nErr == KErrNone) {
  TRAPD(err, pIAPView->ReadUintL(TPtrC(COMMDB_ID), cmnetIapId));
  if(err != KErrNone)
   cmnetIapId = 0;
 }
 else
  cmnetIapId = 0;
 CleanupStack::PopAndDestroy(2);
// ====<< [Ver 3.01] by Figo.Yang ==========2007/11/14 19:31 ===<<<

// ====>> [Ver 3.01] by Figo.Yang ==========2007/11/14 20:07 ===>>>
 if( !iConnection.SubSessionHandle() )
  {
  User::LeaveIfError( iConnection.Open( iSocketServ ) );
  }
 
 TCommDbConnPref prefs;
 prefs.SetDialogPreference (ECommDbDialogPrefDoNotPrompt);
 prefs.SetDirection (ECommDbConnectionDirectionOutgoing);
 prefs.SetIapId (cmnetIapId);

 // Start an Outgoing Connection with overrides
 iConnection.Start(prefs);
// ====<< [Ver 3.01] by Figo.Yang ==========2007/11/14 20:07 ===<<< 

你可能感兴趣的:(service,user,Access)