3

Qt のアプリケーションで URL を開くために使用QDeskTopServicesしていますが、ブラウザーが既にバックグラウンドで開いている場合、ブラウザーはフォアグラウンドに移動せず、 on を呼び出しても何もしません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 に答える