2012-04-04 9 views
3

Ich benutze QDeskTopServices, um eine URL in meiner Anwendung in Qt zu öffnen, aber wenn der Browser im Hintergrund bereits geöffnet ist, kommt es nicht in den Vordergrund und tut nichts beim Anrufen QDeskTopServices.Wie man bereits geöffneten Browser aus der Anwendung in Qt

Gibt es eine Möglichkeit, den Browser zu überprüfen und zu schließen, wenn er bereits im Hintergrund geöffnet ist?

+0

Es gibt keine solche Überprüfung. Wenn ein laufender Browser in den Vordergrund gebracht wird, ist dies möglicherweise vom Windowing-System nicht erlaubt (In Windows muss der Vordergrundprozess dies zulassen). Wenn die URL nicht einmal im Hintergrund geöffnet wird, ist das ein Fehler. Auf welcher Plattform bist du? –

+0

für welche Plattform Sie kodieren, für Symbian, ich denke, dass Sie spezielle Fähigkeiten dafür benötigen. – Kunal

+0

@Kunal Ich bin für Symbain Plattform Codierung, ich versuche diesen Link auch, aber es zeigt mir Fehler [Link] (http://www.developer.nokia.com/Community/Wiki/TSS000340_-_Launching_the_Web_browser_on_S60_3rd_Edition_to_open_a_specified_URL) – abhishek

Antwort

1

Ich habe eine Antwort gefunden, um Browser nach vorne zu bringen, aber immer noch funktioniert, um die URL zum Browser zu übergeben.

#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 

Wenn irgendein Vorschlag dann fügen Sie es bitte der Antwort hinzu.

Problem gelöst, einfach "Symbian: TARGET.CAPABILITY + = SwEvent" in Ihrer project.pro Datei hinzufügen und signierte App machen. Dies wird das Problem lösen :)

+0

@Kunal Hast du Eingaben zu dieser Antwort?/ – abhishek

+0

@kunal Danke für deine Hilfe – abhishek

0
QDesktopServices::openUrl(QUrl("http://google.com")); 

die obige Zeile verwenden, können Sie Browser öffnen. Fügen Sie einfach "symbian: TARGET.CAPABILITY + = SwEvent" in Ihre project.pro-Datei ein und erstellen Sie eine signierte App.

Verweise LINK