Como receber chamadas para o manipulador de URL personalizado no Ubuntu Touch QML

2

Eu tenho um aplicativo QML que precisa reagir a uma chamada de manipulador de URL personalizada, como "myapp: // alguma coisa". Eu sei que preciso registrar o manipulador de URL no meu arquivo * .desktop como:

MimeType=x-scheme-handler/myapp;

No entanto, não sei onde receber a chamada para esse manipulador em QML. Alguém pode me ajudar?

Obrigado.

    
por ali 29.03.2014 / 10:37

1 resposta

1

Solução para 14.04 (fácil, somente QML)

O código QML a seguir funcionará no 14.04 somente porque requer Qt >= 5.1 (e o Trusty fornece 5.2.1 ).

Você pode ter um arquivo .desktop contendo:

Exec=/usr/bin/qmlscene %U /path/to/your/qml-app/myapp.qml
MimeType=x-scheme-handler/myapp

e use Qt.application.arguments[1] para receber o conteúdo da URL.

Solução para 13.10 (requer C ++)

O arquivo .desktop é muito semelhante ao anterior, mas aqui qmlscene é substituído pelo nome do seu aplicativo:

Exec=/path/to/your/binary_app %U 
MimeType=x-scheme-handler/myapp

Para 13.10, você terá que usar algum C ++ e analisar os argumentos usando esse tipo de aplicativo:

#include <QtGui/QGuiApplication>
#include "qtquick2applicationviewer.h"
#include <QQmlContext>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QtQuick2ApplicationViewer viewer;

    // Register the URL with the QML runtime
    viewer.rootContext()->setContextProperty("url", app.arguments().at(1));

    // Now, load the main page
    viewer.setMainQmlFile(QStringLiteral("qml/myapp.qml"));
    viewer.showExpanded();
    return app.exec();
}

Você poderá obter o URL do QML graças a setContextProperty ().

Visite Como incorporar objetos C ++ ao QML com propriedades de contexto para obter mais detalhes.

    
por Sylvain Pineau 31.03.2014 / 14:51