我使用QDeskTopServices
在我的Qt應用程序中打開一個URL,但如果瀏覽器在後臺已經打開,它不來的前景和不上呼籲什麼QDeskTopServices
。如何從應用程序關閉已打開的瀏覽器中的Qt
有沒有什麼方法可以檢查並關閉瀏覽器,如果它已經在後臺打開?
我使用QDeskTopServices
在我的Qt應用程序中打開一個URL,但如果瀏覽器在後臺已經打開,它不來的前景和不上呼籲什麼QDeskTopServices
。如何從應用程序關閉已打開的瀏覽器中的Qt
有沒有什麼方法可以檢查並關閉瀏覽器,如果它已經在後臺打開?
我發現把瀏覽器到前一個答案,但依然工作所需的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文件,並簽署應用:也只是增加「TARGET.CAPABILITY + = SwEvent塞班」。
推薦這個LINK
有沒有這樣的檢查。將運行的瀏覽器引導到前臺可能不被窗口系統允許(在Windows中,前臺進程需要允許)。如果它甚至不在後臺打開該URL,那就是一個錯誤。你在哪個平臺上? – 2012-04-04 08:33:33
你正在編碼的平臺,對於symbian,我認爲你需要特殊的能力來做到這一點。 – Kunal 2012-04-04 09:11:55
@Kunal我編碼symbain平臺,我想這個環節還可以,但它顯示了我錯誤[鏈接](http://www.developer.nokia.com/Community/Wiki/TSS000340_-_Launching_the_Web_browser_on_S60_3rd_Edition_to_open_a_specified_URL) – abhishek 2012-04-04 09:52:08