2

是否可以注册在浏览器、电子邮件或 bbm 中请求特定 URL 时启动的应用程序?

例如,我希望当用户单击链接 flycraft://replay/123 时,我的应用程序将被启动并传递 URI。

4

3 回答 3

4

目前这是不可能的。

这有两个部分:

  1. 向浏览器注册 URI 方案。例如flycraft://,以便浏览器知道将这些链接视为可调用的。
  2. 注册您的应用程序以处理flycraft://调用,以便您的应用程序加载。

不幸的是,第一部分目前是不可能的。有计划,但现阶段没有具体的计划。

于 2013-01-18T09:54:53.257 回答
1

是的!您可以使用 BB10调用框架来做到这一点。appurl.org提供了相当多的细节。简而言之:

  1. 如果您还没有调用目标,请在 bar-descriptor.xml 文件中添加一个调用目标。
  2. 为您的目标添加一个目标过滤器,其中包含操作“bb.action.VIEW”和“bb.action.OPEN”以及标签<property var="uris" value="flycraft:"> </property>
  3. 将一个invokeManager对象添加到您的应用程序中main,并将其invoked信号连接到可以处理该请求的代码的某个插槽。
于 2013-03-25T23:07:28.860 回答
1

在 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 上没有办法做到这一点。

于 2013-06-16T09:03:31.073 回答