Задать вопрос
@kirvel

Как обновить виджет в Android в заданное время используя AlarmManager?

У меня есть виджет, который требуется обновлять каждый день в заданное время. Я попытался реализовать это через AlarmManager, но виджет не обновляется.

@Override
public void onReceive(Context context, Intent intent) {
    super.onReceive(context, intent);

    if (ACTION_AUTO_UPDATE_WIDGET.equals(intent.getAction())) {
        onUpdate(context, AppWidgetManager.getInstance(context),
                
    AppWidgetManager.getInstance(context).getAppWidgetIds(newComponentName(context, Widget.class)));
    }
}

@Override
public void onDisabled(Context context) {
    super.onDisabled(context);
    Intent intent = new Intent(Widget.ACTION_AUTO_UPDATE_WIDGET);
    AlarmManager alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    alarmMgr.cancel(PendingIntent.getBroadcast(context, 0, intent, 0));
}

@Override
public void onEnabled(Context context) {
    super.onEnabled(context);

    Intent intent = new Intent(Widget.ACTION_AUTO_UPDATE_WIDGET);
    PendingIntent alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);

    Calendar c = Calendar.getInstance();
    c.set(Calendar.HOUR_OF_DAY, 17);
    c.set(Calendar.MINUTE, 32);
    c.set(Calendar.SECOND, 0);

    AlarmManager alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    alarmMgr.setRepeating(AlarmManager.RTC, c.getTimeInMillis(), AlarmManager.INTERVAL_DAY, alarmIntent);
}

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    for (int id : appWidgetIds) {
        updateWidget(context, appWidgetManager, id);
    }
}
  • Вопрос задан
  • 147 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
@kirvel Автор вопроса
Проблема заключалась в том, что я неправильно создавал Intent. Вот как нужно было:
Intent intent = new Intent(context, Widget.class);
intent.setAction(ACTION_AUTO_UPDATE_WIDGET);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы