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