【问题标题】:BBOS (pre BB10) Launching App through Intents (Like Android)BBOS(BB10 之前)通过 Intents 启动应用程序(如 Android)
【发布时间】:2013-04-09 14:31:07
【问题描述】:

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

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

例如在 Android 中,我可以使用这样的 Intent 过滤器

<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 经验的人都知道这是否可行?

【问题讨论】:

    标签: url blackberry launch


    【解决方案1】:

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

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

    要捕获未记录的 GUID,implement 是一个使用 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 应用程序完成其部分工作后,它可以fire GlobalEvent 并且您的本机应用程序将等待它拦截它并进一步工作。

    【讨论】:

      【解决方案2】:

      有一些方法可以在 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 使用此方法allow developers to launch their app in app world from a url

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

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

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

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

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-04
        • 1970-01-01
        • 2014-10-13
        • 1970-01-01
        相关资源
        最近更新 更多