Я знаю, что это возможно, но не могу понять, как запустить обновление моего виджета из основного действия. Разве я не могу транслировать какое-то общее намерение?
97
Я знаю, что это возможно, но не могу понять, как запустить обновление моего виджета из основного действия. Разве я не могу транслировать какое-то общее намерение?
Если будут используя AppWidgetProvider
, вы можете обновить его таким образом:
Intent intent = new Intent(this, MyAppWidgetProvider.class);
intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
// Use an array and EXTRA_APPWIDGET_IDS instead of AppWidgetManager.EXTRA_APPWIDGET_ID,
// since it seems the onUpdate() is only fired on that:
int[] ids = AppWidgetManager.getInstance(getApplication())
.getAppWidgetIds(new ComponentName(getApplication(), MyAppWidgetProvider.class));
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids);
sendBroadcast(intent);
widgetId
?intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
Это помогло, когда я искал, как обновить виджет из службы / или действия (но может быть возможно из любого контекста):
источник
Итак, чтобы обновить виджет из активности, вы можете сделать это следующим образом:
Работает для меня :)
источник
Попробуй это:
источник
Если вы работаете с виджетом, который использует такую коллекцию, как ListView, GridView или StackView, для обновления элементов виджета, сделайте следующее:
С помощью этого метода notifyAppWidgetViewDataChanged () вы можете заставить элементы виджета получать любые новые данные в реальном времени.
источник
источник
notifyAppWidgetViewDataChanged()
которая принимает массив.Принятое решение Фаэтона в Котлине:
Где MyAppWidgetProvider является производным от AppWidgetProvider:
class MyAppWidgetProvider : AppWidgetProvider() {
источник
Если вы пытаетесь программно обновить виджет, в котором у вас нет доступа к YourWidgetProvider.class явно, например, из другого модуля или библиотеки, вы можете записать, что выводит YourWidgetProvider.class.getName (), и создать константу:
Тогда вы сможете использовать это неявно:
источник