【发布时间】:2013-01-17 21:00:28
【问题描述】:
是否可以注册在浏览器、电子邮件或 bbm 中请求特定 URL 时启动的应用程序?
例如,当用户单击链接 flycraft://replay/123 时,我希望启动我的应用并传递 URI。
【问题讨论】:
标签: native blackberry-10 playbook
是否可以注册在浏览器、电子邮件或 bbm 中请求特定 URL 时启动的应用程序?
例如,当用户单击链接 flycraft://replay/123 时,我希望启动我的应用并传递 URI。
【问题讨论】:
标签: native blackberry-10 playbook
目前这是不可能的。
这有两个部分:
flycraft:// 以便浏览器知道将这些链接视为可调用的。flycraft:// 调用,以便加载您的应用。 很遗憾,目前第一部分是不可能的。有计划,但现阶段没有具体的计划。
【讨论】:
在 BlackBerry 10 上执行此操作的方法是在条形描述符文件中添加以下代码:
<invoke-target id="eu.nlogn.flycraftplaybook.replayview">
<invoke-target-type>application</invoke-target-type>
<filter>
<action>bb.action.VIEW</action>
<mime-type>*</mime-type>
<property value="flycraft://" var="uris" />
</filter>
</invoke-target>
那么你应该监听 NAVIGATOR_INVOKE_TARGET 事件并像这样处理它:
const navigator_invoke_invocation_t *invoke = navigator_invoke_event_get_invocation(event);
if (invoke) {
// retrieve invocation action
const char *action = navigator_invoke_invocation_get_action(invoke);
const char *uri = navigator_invoke_invocation_get_uri(invoke);
if (action && uri) {
// handle the uri you got
}
} else {
fprintf(stderr, "Error retrieving invocation: %s\n", navigator_event_get_err(event));
}
很遗憾,Playbook 上没有办法做到这一点。
【讨论】:
是的!您可以使用 BB10 invocation framework 执行此操作。 appurl.org 提供了相当多的详细信息。简而言之:
<property var="uris" value="flycraft:"> </property>
invokeManager 对象添加到您应用的main,并将其invoked 信号连接到可以处理该请求的代码的某个槽。【讨论】: