Как обновить Android AppWidget после обновления / переустановки приложения?

Я создал приложение (https://play.google.com/store/apps/details?id=com.widget.analytics), в котором отображается статистика Google Analytics на главном экране Android с помощью AppWidget.

К сожалению, после обновления приложения до новой версии пользователям необходимо удалить все виджеты, которые они создали ранее, и снова установить их. Это очень раздражает. Тем не менее, я убежден, что есть путь.

После обновления приложения виджеты не будут уничтожены, они просто находятся в состоянии «по умолчанию», которое они наследуют от макета.

Есть ли какой-либо из четырех обратных вызовов виджета, которые я могу использовать для обновления виджетов? Есть ли после-ùpgrade-callback, что я могу действовать и обновлять виджеты?

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

 public class WidgetProvider extends AppWidgetProvider { @Override public void onUpdate (Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){ // Here we update the widget :) } } 

Вы можете зарегистрировать BroadcastReceiver чтобы получать ACTION_PACKAGE_REPLACED передачу ACTION_PACKAGE_REPLACED , а затем в приемнике уведомлять ваши виджеты для перезагрузки (вероятно, через AppWidgetManager.notifyAppWidgetViewDataChanged(..) ). Вам также может потребоваться получение ACTION_MY_PACKAGE_REPLACED передачи ACTION_MY_PACKAGE_REPLACED .