Symbian S60第三版上启动浏览器并打开指定网页

阅读更多



void OpenUrlL(const TDesC& aUrl)
{
if(aUrl.Length() <= 0)
return;
HBufC* param= HBufC::NewLC(aUrl.Length() + 8);
param->Des().Format(_L( "4 %S" ),&aUrl);

// WapBrowser's constants UId
const TIntKWmlBrowserUid = 0x1020724D;
TUidid(TUid::Uid(KWmlBrowserUid));

TApaTaskListtaskList(CEikonEnv::Static()->WsSession());
TApaTasktask = taskList.FindApp(id);
if(task.Exists())
{
HBufC8* param8 = HBufC8::NewLC(param->Length() *4);
param8->Des().Append(*param);
task.SendMessage(TUid::Uid(0), *param8); // Uid is not used
CleanupStack::PopAndDestroy(); // param8
}
else
{
RApaLsSession appArcSession;
User::LeaveIfError(appArcSession.Connect()); // connect to AppArcserver
TThreadId id;
appArcSession.StartDocument(*param, TUid::Uid(KWmlBrowserUid),id);
appArcSession.Close();
}
CleanupStack::PopAndDestroy(); // param
}

然而在S603rd的设备上存在两个浏览器"网络"和"服务","网络"UID是0x1020724D,"服务"的UID是0x10008D39,上面的代码会启动"服务",但是确不能打开指定的网页,如果把UID换成"网络"的UID是可以正常打开的,可是在S603rdFP1的设备上只剩下一个浏览器,UID为0x10008D39,这就造成了代码通用性的问题,为了避免生成两个版本的程序,我们可以首先查找0x1020724D这个UID对应的程序是否在系统中存在,如果存在说明手机的基于S603rd的,如果不存那么就是基于S60 3rd FP1的,这时我们使用0x10008D39就可以了。

void CShowTimeAppUi::OpenUrlL(const TDesC&aUrl)
{
if(aUrl.Length() <= 0)
return;
const TIntKBrowserUid1 = 0x1020724D;
const TIntKBrowserUid2 = 0x10008D39;
RApaLsSession appArcSession;
User::LeaveIfError(appArcSession.Connect()); // connect to AppArcserver
HBufC* param= HBufC::NewLC(aUrl.Length() + 8);
param->Des().Format(_L( "4 %S" ),&aUrl);
// WapBrowser's constants UId
TUidbrowserId(TUid::Uid(KBrowserUid1));
TApaAppInfoappInfo;
if(appArcSession.GetAppInfo(appInfo, browserId) != KErrNone)
{
browserId = TUid::Uid(KBrowserUid2);
}
TApaTaskListtaskList(CEikonEnv::Static()->WsSession());
TApaTasktask = taskList.FindApp(browserId);
if(task.Exists())
{
HBufC8* param8 = HBufC8::NewLC(param->Length() *4);
param8->Des().Append(*param);
task.SendMessage(TUid::Uid(0), *param8); // Uid is not used
CleanupStack::PopAndDestroy(); // param8
}
else
{
TThreadId id;
appArcSession.StartDocument(*param, browserId, id);
}
appArcSession.Close();
CleanupStack::PopAndDestroy(); // param
}

转自:http://aptana.blog.163.com/blog/static/120326010200952043045152/

你可能感兴趣的:(浏览器,Symbian,Aptana,Blog)