我想知道我是否可以在BB OS(4 - 7)中开发一个具有与Android / iOs类似功能的应用程序;
例如在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>
在添加诸如
之类的网址时启动应用然后我可以在launchchapp /之后解析这两个数字并在应用程序中使用它们。
任何有BB OS经验的人都知道这是否可行?
答案 0 :(得分:2)
我不知道有文件的侦听器拦截打开的URL。但是有GlobalEvent机制。在BB10之前的操作系统上,几乎所有步骤都会触发一个或多个全局事件。其中一些是有记录的,有些则没有。
列出了已记录的GUID:http://www.blackberry.com/developers/docs/7.0.0api/index-files/index-7.html(查找 G 字母,向下滚动 GUID_xxxx 常量)。
要捕获使用implement的未记录的GUID,GlobalEventListener后台应用程序。然后在浏览器中打开一个页面,并将所有全局事件guids和对象与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
当您的网络应用程序完成其部分工作时,它可以fire GlobalEvent并且您的原生应用程序将等待它拦截并进一步工作。
答案 1 :(得分:1)
根据您的具体需要,有一些方法可以在BBOS上执行此操作。
使用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。
创建HttpFilter
。使用此方法,您可以通过代码建立与给定域的连接。在这里,您将为您的域myapp.com注册过滤器,每当有人试图访问任何myapp.com时,浏览器都会调用您的过滤器来处理请求。 BlackBerry App World再次执行此操作以访问http://appworld.blackberry.com域。 [样本中有HttpFilterDemo
可以帮助您]
使用StringPattern
API。几乎所有原生文本字段都支持它。因此,如果有一个文本字段,其中写入了与特定模式匹配的文本,则它将加下划线并单击它将在菜单中显示您的自定义操作。 [样本中有StringPatternDemo
可以帮助您]
如果您的应用位于App World中,而您只想启动它,请使用网址http://appworld.blackberry.com/webstore/content/xxxx
,其中 xxxx 是您应用的内容ID。
此外,尝试使用Global Events没有任何用处。从OS 4.5开始,全局事件广播机制的分区方式使得系统事件仅传递给系统应用程序而不是他们的派对应用程序,反之亦然。
希望这有帮助。