是否可以注册在浏览器、电子邮件或 bbm 中请求特定 URL 时启动的应用程序?
例如,我希望当用户单击链接 flycraft://replay/123 时,我的应用程序将被启动并传递 URI。
是否可以注册在浏览器、电子邮件或 bbm 中请求特定 URL 时启动的应用程序?
例如,我希望当用户单击链接 flycraft://replay/123 时,我的应用程序将被启动并传递 URI。
目前这是不可能的。
这有两个部分:
flycraft://
,以便浏览器知道将这些链接视为可调用的。flycraft://
调用,以便您的应用程序加载。不幸的是,第一部分目前是不可能的。有计划,但现阶段没有具体的计划。
是的!您可以使用 BB10调用框架来做到这一点。appurl.org提供了相当多的细节。简而言之:
<property var="uris" value="flycraft:"> </property>
invokeManager
对象添加到您的应用程序中main
,并将其invoked
信号连接到可以处理该请求的代码的某个插槽。在 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 上没有办法做到这一点。