Tizen Native: как я могу иметь только один экземпляр виджета и не позволять пользователю создавать больше?

Я хочу ограничить количество экземпляров виджета моего приложения виджета, которые пользователь может запустить. На самом деле, для моего случая имеет смысл иметь только один.

В устройстве Samsung Gear 2 виджет музыкального проигрывателя ведет себя так, как мне нужно. На самом деле, когда вы запускаете этот виджет, он больше не отображается в списке виджетов. Это было бы идеально!

Виджеты расписания также имеют такое поведение. Есть примеры проектов для музыкального плеера и для виджетов Schedule, но в примерах такого поведения не происходит.

Какие-либо предложения?


person peterg    schedule 28.11.2016    source источник


Ответы (1)


Я нашел здесь решение: https://developer.tizen.org/zh-hans/forums/native-application-development/limit-number-widget?langswitch=zh-hans

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

int instance_count =0;

Затем в экземпляре виджета создайте обратный вызов, мы проверяем переменную и увеличиваем ее, если есть только один экземпляр, или возвращаем ошибку, если он уже создал один экземпляр.

static int
_on_create_cb(widget_context_h context, bundle *content, int w, int h, void *user_data) {

    if(instance_count >0) return WIDGET_ERROR_ALREADY_EXIST;
    instance_count++;

    return WIDGET_ERROR_NONE;
}

В обратном вызове уничтожения мы уменьшаем счетчик

static int
_on_destroy_cb(widget_context_h context, widget_app_destroy_type_e reason, bundle *content, void *user_data) {
    instance_count--;
    return WIDGET_ERROR_NONE;
}

Это не идеальное решение, поскольку оно по-прежнему позволяет пользователю выбирать виджет из списка, но оно работает. Я также специально протестировал сбой приложения, и это решение работает. Когда приложение аварийно завершает работу, _on_destroy_cb не вызывается, но instance_count все равно сбрасывается на 0.

person peterg    schedule 29.11.2016
comment
На мой взгляд, было бы лучше, если бы у разработчиков была возможность скрывать установленный виджет с доски виджетов после создания его единственного экземпляра. Но к сожалению не нашел! - person Shaswati Saha; 30.11.2016
comment
Да, я согласен. Было бы намного лучше, если бы этот вариант существовал. Тоже не нашел. - person peterg; 17.12.2016