0

我想知道我是否可以在 BB OS (4 - 7) 中开发具有与 Android/iOs 类似功能的应用程序 where ;

  • 我将能够注册该应用程序以侦听特定的 URL。
  • 我可以通过 URL 启动应用程序。
  • 我可以从 URL 解析数据并在应用程序中使用。

例如在 Android 中,我可以像这样使用 Intent Filters

<intent-filter>
    <action android:name="android.intent.action.VIEW"></action>
      <category android:name="android.intent.category.DEFAULT"></category>
      <category android:name="android.intent.category.BROWSABLE"></category>
      <data android:scheme="http"
          android:host="myapp.com"
          android:pathPrefix="/launchapp/" />

</intent-filter>

在加载 url 时启动应用程序,例如

然后我可以在 launchapp/ 之后解析这两个数字并在应用程序中使用它们。

任何有 BB OS 经验的人都知道这是否可能?

4

2 回答 2

2

我不知道有记录的侦听器可以拦截打开的 URL。但是有 GlobalEvent 机制。几乎在 BB10 之前的操作系统上执行的每一步都会触发一个或多个全局事件。其中一些已记录在案,有些则没有。

列出了已记录的 GUID:http: //www.blackberry.com/developers/docs/7.0.0api/index-files/index-7.html(查找G字母,并向下滚动以查找 GUID_xxxx常量)。

要捕获未记录的 GUID,请实现一个使用GlobalEventListener的后台应用程序。然后在浏览器中打开一个页面并记录所有全局事件 guid 和与 guid 一起eventOccurred调用的对象。您可以找出哪些全局事件 guid 与 url-open 事件相关。它将有助于创建 URL 拦截机制。这部分应该是一个原生应用程序(用Java编写)。

可以通过 url 启动应用程序,但它应该是 WebWorks 应用程序。不是土生土长的。检查此链接: http: //supportforums.blackberry.com/t5/Web-and-WebWorks-Development/Launch-BlackBerry-WebWorks-app-via-URL-with-parameters/td-p/1674663

当您的 webworks 应用程序完成其部分工作时,它可以触发 GlobalEvent并且您的本机应用程序将等待它拦截它并进一步工作。

于 2013-04-09T19:16:40.643 回答
1

有一些方法可以在 BBOS 上执行此操作,具体取决于您到底想要什么。

  1. net.rim.device.api.browser.plugin使用API创建浏览器插件。在这里,您创建一个 BrowserContentProvider 并将其附加到 BB 浏览器以处理特定的 mime 类型。这种 mime 类型必须是您独有的,并且没有被本机浏览器处理(比如x-vnd-whatever/myapplauncher)。当浏览器访问您的网址时,例如http://myapp.com/launchapp/233,提供一个编号为 233 和注册的 mime 类型的文件。浏览器将下载文件,查看其 mime 类型,然后将文件内容传递给您的插件进行处理。您的插件将读取应用程序 id - 233,然后使用它做任何您想做的事情。BlackBerry App World 使用此方法允许开发人员从 url 在应用程序世界中启动他们的应用程序

  2. 创建一个HttpFilter. 使用它,您可以通过您的代码连接到给定的域。在这里,您将为您的域 myapp.com 注册过滤器,每当有人尝试访问任何 myapp.com 时,浏览器都会调用您的过滤器来处理请求。BlackBerry App World 再次这样做是为了访问http://appworld.blackberry.com域。[样本中有一个HttpFilterDemo可以帮助您]

  3. 使用StringPatternAPI。几乎所有原生文本字段都支持它。因此,如果有一个文本字段的文本与特定模式匹配,它将成为下划线,单击它会在菜单中显示您的自定义操作。[样本中有一个StringPatternDemo可以帮助您]

  4. 如果您的应用在 App World 中并且您只想启动它,请使用http://appworld.blackberry.com/webstore/content/xxxx其中xxxx是您的应用内容 ID 的 URL。

此外,尝试使用全局事件没有任何用处。从 OS 4.5 开始,全局事件广播机制已被划分为系统事件仅传递给系统应用程序而不是它们的派对应用程序,反之亦然。

希望这可以帮助。

于 2013-04-11T20:14:28.450 回答