我QDeskTopServices
用来在 Qt 的应用程序中打开一个 URL,但是如果浏览器已经在后台打开,它不会进入前台并且在调用QDeskTopServices
.
如果浏览器已经在后台打开,有什么方法可以检查并关闭它?
我找到了将浏览器放在前面的答案,但仍然需要将 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”并制作签名应用程序。这将解决问题:)
QDesktopServices::openUrl(QUrl("http://google.com"));
使用上面的行,您可以打开浏览器。并且只需在您的 project.pro 文件中添加“symbian:TARGET.CAPABILITY += SwEvent”并制作签名应用程序。
参考这个链接