0

规格:WebWorks 2.2、Curve 9330 OS 6 模拟器和设备

我们会的,我已经尝试了几乎所有方法,但我无法弄清楚。我的应用程序有一个主页 (index.html) 和一个后台页面 (listener.html),如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<widget xmlns="http://www.w3.org/ns/widgets" 
   xmlns:rim="http://www.blackberry.com/ns/widgets" 
   version="1.0.0.0" rim:header="SimpleSMS">
   <name>SimpleSMS</name>
   <description>Simple SMS</description>
   <content src="index.html">
       <rim:background src="listener.html" runOnStartup="true" />
   </content>
   <rim:navigation mode="focus" />
   <access subdomains="false" uri="http://jsconsole.com"/>
   <feature id="blackberry.message.sms" />
   <feature id="blackberry.app" />
   <feature id="blackberry.io.dir" />
   <feature id="blackberry.io.file" />
   <feature id="blackberry.utils" />
</widget>

listener.html 如下所示:

<!DOCTYPE html>
<html>
    <head>
    <script type="text/javascript" src="message_db2.js"></script>
    <script type="text/javascript">
    </script>
    </head>
    <body onload="initializeListener();">
    </body>
</html>

initializeListener() 函数如下:

function initializeListener() {
    blackberry.message.sms.isListeningForMessage = true;
    blackberry.message.sms.addReceiveListener(messageListener);
}

问题:当我安装我的应用程序并且监听器开始运行时,我的应用程序可以毫无问题地接收短信。一旦我打开主应用程序,问题就开始了。如果我只是使用后退或结束按钮将应用程序最小化到后台,则收到的下一条短信会导致异常。如果我通过菜单关闭应用程序,也不例外,但监听器停止运行。我已经注释了 messageListener 中的所有代码,并且 index.html 除了显示一些 html 之外什么都不做。几乎没有关于拥有背景页面的文档。有没有人有任何想法?提前致谢。

4

1 回答 1

0

会不会是 webworks 会转到这些不同的页面并丢弃前一页中的所有内容?(就像您在浏览器中转到新页面时填写的表格会发生什么)

也许您需要使用应用程序事件来检查应用程序何时进入前台或后台;也许仔细检查 isListeningForMessage?

我在想类似的东西

function onFG()
{
  if (!blackberry.message.sms.isListeningForMessage)
  {
    blackberry.message.sms.isListeningForMessage = true;
    blackberry.message.sms.addReceiveListener(messageListener);
  }
}

blackberry.app.event.onForeground(onFG);

如果你需要让你的代码区分它在哪里运行,你也可以使用isForeground布尔值。

于 2012-01-19T23:02:12.440 回答