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