I am using QDeskTopServices to open a URL in my application in Qt, but if the browser is already open in background, it does not come to the foreground and does nothing on calling on QDeskTopServices.
Is there any way to check and close the browser if it is already open in background?
I found an answer for bringing browser to front but still work needed to pass the Url to browser.
#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
If any suggestion then please add it to the answer.
Problem solved, just add "symbian:TARGET.CAPABILITY += SwEvent" in your project.pro file and make signed app. This will solve the problem :)
QDesktopServices::openUrl(QUrl("http://google.com"));
using the above line you can open browser. And also just add "symbian:TARGET.CAPABILITY += SwEvent" in your project.pro file and make signed app.
Refer this LINK