Invocar o aplicativo do navegador / outro aplicativo usando o URL personalizado

Em bar-descriptor.xml, adicione o seguinte xml:

<!-- invocation target -->
<invoke-target id = "com.example.InvocationTest">
<invoke-target-type>application</invoke-target-type>
<invoke-target-name>InvocationTest</invoke-target-name>
<icon> <image>icon.png</image> </icon>
<filter>
<action>bb.action.VIEW</action>
<action>bb.action.OPEN</action>
<mime-type>*</mime-type>
<property var="uris" value="invocation:"></property>
</filter>
</invoke-target>
  • “id” deve ser igual ao id do seu aplicativo
  • você deve fornecer o ícone, é recomendado usar o mesmo ícone do aplicativo como ícone de invocação

Na classe main_application (não main.cpp, mas sua classe de aplicativo), o IDE momentics cria automaticamente a classe applicationui se você escolher o projeto cascatas.

applicationui.hpp :

public:
Q_SLOT Q_INVOKABLE
void handleInvoke(const bb::system::InvokeRequest&);
private:
bb
::system::InvokeManager* m_invokeManager;
Q_SIGNALS
:
void gotData(QString, QString);
  • InvokeManager é uma classe para gerenciar a invocação
  • O método handleInvoke age como um ouvinte quando a invocação acontece
  • O sinal gotData é apenas um sinal para enviar dados ao objeto em qml

applicationui.cpp :

using namespace bb::system;

//constructor
ApplicationUI::ApplicationUI(bb::cascades::Application *app) : QObject(app)
{
m_invokeManager
= new InvokeManager(this);
QObject::connect(m_invokeManager, SIGNAL(invoked(const bb::system::InvokeRequest &)), this, SLOT(handleInvoke(const bb::system::InvokeRequest &)));
// your code
}

//listener
void ApplicationUI::handleInvoke(const InvokeRequest& request)
{
QString uri = request.uri().toString();
QString data = QString::fromUtf8(request.data());
qDebug
() << "INVOKE RESULT: " << uri << " " << data;
emit gotData
(uri, data);
}
  • use o namespace bb :: system (para usar a classe InvokeManager)
  • criar uma nova instância InvokeManager
  • definir manipulador / ouvinte para esta invocação de aplicativo
  • criar método de ouvinte com solicitação de parâmetro para a solicitação e dados que são enviados do navegador / outro aplicativo

Não se esqueça de adicionar esta linha no arquivo .pro :

LIBS += -lbbsystem

Fonte: link