在symbian第五版中在browser control中使用自己的接入点进行网络访问

KIS000738 - Setting access point ID for Browser Control Interface has no effect in S60 3rd Edition, Feature Pack 1

From Forum Nokia Wiki

 

 

ID KIS000738 Creation date August 31, 2007, updated January 9, 2008
Platform S60 3rd Edition, Feature Pack 1 Devices  
Category Symbian C++ Subcategory Nokia Web Browser

 

Keywords (APIs, classes, methods, functions):

Overview

Setting the access point ID for Browser Control Interface (CBrCtlInterface) does not have any effect in S60 3rd Edition, Feature Pack 1 devices.

Description

In S60 3rd Edition, the access point to be used for the Browser Control Interface can be set with

   iBrCtlInterface->SetBrowserSettingL( TBrCtlDefs::ESettingsApId, apId );

After this, the access point with the specified ID (apId) will be used for the network connection automatically, without prompting the AP selection dialog.

In S60 3rd Edition, Feature Pack 1, a different Browser engine is used for Browser Control Interface. Calling the above function with a valid access point has no effect, and the access point selection dialog is shown every time when opening a URL using this API.

Solution

MBrCtlSpecialLoadObserver class has a virtual NetworkConnectionNeededL() member function that is called every time when a network connection is needed. A new class must be inherited from MBrCtlSpecialLoadObserver and this class has to implement its own network connection in the NetworkConnectionNeededL() function. The object of this user-implemented class can be passed as a parameter to CreateBrowserControlL() which creates the browser controller.

CMySpecialLoadObserver member variables

RSocketServ  iSocketServer;
RConnection  iConnection;
TBool        iFirstTime;  //Initial value should be ETrue
void CMySpecialLoadObserver::NetworkConnectionNeededL(
                                   TInt* aConnectionPtr,
                                   TInt* aSockSvrHandle,
                                   TBool* aNewConn,
                                   TApBearerType* aBearerType ) 
 {
 *aBearerType = EApBearerTypeAllBearers;
 
 if(iFirstTime) 
   {
   //New connection is established only once
   User::LeaveIfError(iSocketServer.Connect(KESockDefaultMessageSlots));
   User::LeaveIfError(iConnection.Open(iSocketServer, KConnectionTypeDefault));
   TCommDbConnPref prefs;
   prefs.SetDialogPreference(ECommDbDialogPrefDoNotPrompt);
   prefs.SetDirection(ECommDbConnectionDirectionOutgoing);
   prefs.SetIapId(2);	//preferred IAP 
   User::LeaveIfError(iConnection.Start(prefs));
   *aNewConn = ETrue;
   iFirstTime = EFalse; 
   }
 else
   {
   *aNewConn = EFalse;
   }
   
 *aConnectionPtr = reinterpret_cast<TInt>(&iConnection);
 *aSockSvrHandle = iSocketServer.Handle();
 return;
 }
阅读更多
个人分类: Symbian
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭