在S60第三版FP1中设置浏览器控制接口的访问连接点ID无效
From Forum Nokia Wiki
- 开发伙伴平台:
S60 3rd Edition, FP1
- 详细描述
在S60第三版FP1手机中设置浏览器控制接口(CBrCtlInterface)的访问连接点时将无效。
在S60第三版中,可以使用如下方式设置浏览器控制接口的连接点:
iBrCtlInterface->SetBrowserSettingL( TBrCtlDefs::ESettingsApId, apId );
这样就可以使用该ID(apId)下的连接点自动连接网络了,而无需弹出连接点选择对话框了。
但在S60第三版FP1中,浏览器控制接口使用了一个不同的浏览器引擎。调用上述方法将不会生效。每次使用该API打开一个URL链接时还是会弹出连接点选择对话框。
- 解决方案
MBrCtlSpecialLoadObserver类使用了一个叫NetworkConnectionNeededL的虚成员函数。每次需要网络连接时将调用该方法。新类必须要派生自MBrCtlSpecialLoadObserver,并且在NetworkConnectionNeededL方法中完成它自己的网络连接。用户自己完成的这个对象要作为参数传递到CreateBrowserControlL方法中,它用来生成浏览器控制器。
CMySpecialLoadObserver成员变量
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;
}在S60第三版FP1中设置浏览器控制接口的访问连接点ID无效
From Forum Nokia Wiki
- 开发伙伴平台:
S60 3rd Edition, FP1
- 详细描述
在S60第三版FP1手机中设置浏览器控制接口(CBrCtlInterface)的访问连接点时将无效。
在S60第三版中,可以使用如下方式设置浏览器控制接口的连接点:
iBrCtlInterface->SetBrowserSettingL( TBrCtlDefs::ESettingsApId, apId );
这样就可以使用该ID(apId)下的连接点自动连接网络了,而无需弹出连接点选择对话框了。
但在S60第三版FP1中,浏览器控制接口使用了一个不同的浏览器引擎。调用上述方法将不会生效。每次使用该API打开一个URL链接时还是会弹出连接点选择对话框。
- 解决方案
MBrCtlSpecialLoadObserver类使用了一个叫NetworkConnectionNeededL的虚成员函数。每次需要网络连接时将调用该方法。新类必须要派生自MBrCtlSpecialLoadObserver,并且在NetworkConnectionNeededL方法中完成它自己的网络连接。用户自己完成的这个对象要作为参数传递到CreateBrowserControlL方法中,它用来生成浏览器控制器。
CMySpecialLoadObserver成员变量RSocketServ iSocketServer;
RConnection iConnection;
TBool iFirstTime; //Initial value should be ETruevoid 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;
}