Исключение слушателя SMS Blackberry WebWorks - PullRequest
0 голосов
/ 19 января 2012

Спецификации: 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.Там почти нет документации о наличии фоновой страницы.У кого-нибудь есть какие-либо идеи?Заранее спасибо.

1 Ответ

0 голосов
/ 20 января 2012

Может ли веб-работа перейти на эти разные страницы и отбросить все, что было на предыдущей странице? (Например, что происходит с формой, которую вы заполняете при переходе на новую страницу в браузере)

Возможно, вам нужно использовать События приложения , чтобы проверить, когда приложение выходит на передний план или в фоновый режим; Может быть, двойная проверка isListeningForMessage?

Я думаю о чем-то вроде

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

blackberry.app.event.onForeground(onFG);

Вы также можете использовать логическое значение isForeground , если вам нужно, чтобы ваш код различал, где он выполняется.

...