3

QDeskTopServices用来在 Qt 的应用程序中打开一个 URL,但是如果浏览器已经在后台打开,它不会进入前台并且在调用QDeskTopServices.

如果浏览器已经在后台打开,有什么方法可以检查并关闭它?

4

2 回答 2

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”并制作签名应用程序。这将解决问题:)

于 2012-04-05T15:28:27.890 回答
0
QDesktopServices::openUrl(QUrl("http://google.com"));

使用上面的行,您可以打开浏览器。并且只需在您的 project.pro 文件中添加“symbian:TARGET.CAPABILITY += SwEvent”并制作签名应用程序。

参考这个链接

于 2012-05-13T16:39:40.070 回答