我正在使用QDeskTopServices
在我的应用程序中打开Qt中的URL,但如果浏览器已经在后台打开,则它不会出现在前台,并且在调用QDeskTopServices
时不执行任何操作。
如果浏览器已在后台打开,有没有办法检查并关闭它?
答案 0 :(得分:1)
我找到了将浏览器置于最前面的答案,但仍然需要将Url传递给浏览器。
#if defined(Q_WS_S60)
TPtrC16 textPtr(reinterpret_cast<const TUint16*>(theUrl.utf16()));
HBufC *param = HBufC::NewMaxLC(textPtr.Length());
param->Des().Copy(_L("4 http://google.com"));
RApaLsSession apaLsSession;
const TUid KBrowserUid = {0x10008D39};
TApaTaskList taskList(CEikonEnv::Static()->WsSession());
TApaTask task = taskList.FindApp(KBrowserUid);
if (task.Exists()){
// Switch to existing browser instance
task.BringToForeground();
HBufC8* param8 = HBufC8::NewLC(param->Length());
param8->Des().Append(*param);
task.SendMessage(TUid::Uid(0), *param8); // UID not used
CleanupStack::PopAndDestroy(param8);
}
else {
if(!apaLsSession.Handle()) {
User::LeaveIfError(apaLsSession.Connect());
}
TThreadId thread;
User::LeaveIfError(apaLsSession.StartDocument(*param, KBrowserUid, thread));
apaLsSession.Close();
}
CleanupStack::PopAndDestroy(param);
#else
//QDesktopServices::openUrl(QUrl("http://google.com"));
#endif
如果有任何建议,请将其添加到答案中。
问题解决了,只需在project.pro文件中添加“symbian:TARGET.CAPABILITY + = SwEvent”并制作签名应用。这将解决问题:)
答案 1 :(得分:0)
QDesktopServices::openUrl(QUrl("http://google.com"));
使用上面的行可以打开浏览器。还可以在project.pro文件中添加“symbian:TARGET.CAPABILITY + = SwEvent”并制作签名应用程序。
请参阅此LINK