Восстановите приложение MeeGo Harmattan Qt с экрана приложений на N9 - PullRequest
2 голосов
/ 14 февраля 2012

Я пытаюсь опубликовать свое первое приложение для N9 в Магазине Ovi, но мне не удалось выполнить QA:

РЕЗЮМЕ: приложение не может вернуться вперед, нажав значок приложения после приостановки приложения в фоновом режиме. ДЕЙСТВИЯ ПО ВОСПРОИЗВЕДЕНИЮ: 1. Загрузите и установите контент. 2. Запустите приложение. 3. Приостановить приложение в фоновом режиме. 4. Нажмите значок приложения. АКТУАЛЬНЫЙ РЕЗУЛЬТАТ: Нет ответа при нажатии на значок приложения. ОЖИДАЕМЫЙ РЕЗУЛЬТАТ: приложение переходит вперед. Функции и элементы управления в файле содержимого должны работать, как указано.

Мое приложение написано на C ++ с использованием Qt, есть один QWidget. В основной функции я звоню

Widget w;
w.showFullScreen();

Я также переопределяю eventFilter

bool Widget::eventFilter(QObject *object, QEvent *event)
{
    if (event->type() == QEvent::ActivationChange && m_created) {
        if (isActiveWindow()) {
            resume();
        }
        else {
            pause();
        }
    }

    return QWidget::eventFilter(object, event);
}

Но при воспроизведении ошибки я вообще не попадаю в eventFilter. Что я должен сделать, чтобы вернуться к своему приложению, когда я нажимаю значок?

Ответы [ 2 ]

1 голос
/ 02 февраля 2013

Правильный способ сделать это - использовать applauncherd для запуска приложения, позвонив по номеру invoker.Вы также можете использовать его вспомогательную функцию для улучшения времени запуска вашего приложения (с помощью MDeclarativeCache).

Вот документация по использованию invoker:
http://harmattan -dev.nokia.com / docs / platform-api-reference / showdoc.php? pkn = applauncherd-user-Documentation & wb = daily-docs & url = Li94bWwvZGFpbHktZG9jcy9hcHBsYXVuY2hlcmQtdXNlci1QudX * *ci1kb2G * 101

http://harmattan -dev.nokia.com / документы / платформа апи-справочник / showdoc.php? PKN = applauncherd-mdeclarativecache-документация и термометр = ежедневный-документы и URL = Li94bWwvZGFpbHktZG9jcy9hcHBsYXVuY2hlcmQtbWRlY2xhcmF0aXZlY2FjaGUtZG9jdW1lbnRhdGlvbg% 3D% 3D
0 голосов
/ 15 февраля 2012

После некоторых экспериментов я нашел решение.Это немного странно, но работает:

bool Widget::eventFilter(QObject *object, QEvent *event)
{
    if (event->type() == QEvent::ActivationChange)
    {
        if (isActiveWindow())
        {
            resume();
        }
        else
        {
            pause();
        }
    }
    else if (event->type() == QEvent::SockAct) // pure magic
    {
        activateWindow();
        resume();
    }

    return QWidget::eventFilter(object, event);
}

После нажатия значка на главном экране, filetr QEvent :: SockAct и восстановление приложения.

...