Я хочу обновить свой виджет, но он просто не работает! Я сделал это так, чтобы обновление происходило в определенное время - через несколько минут после запуска приложения, но виджет не обновляется. Я знаю это, потому что устанавливаю ярлык с System.currentTimeMillis. Когда приложение обновляется, этот ярлык должен иметь новые значения. Я сделал все, как сказал мне документ Android AlarmManager.Не удается обновить виджет Android с помощью AlarmManager и календаря
views.setTextViewText(R.id.todayDate,System.currentTimeMillis()+"");
Так вот что я сделал, в обоих OnReceive и OnUpdate из
public class CalendarWidget extends AppWidgetProvider
Больше кодекса
Calendar todayMidnight = Calendar.getInstance();
todayMidnight.setTimeInMillis(System.currentTimeMillis());
todayMidnight.add(Calendar.DATE, 0);
todayMidnight.set(Calendar.HOUR_OF_DAY, 23);
todayMidnight.set(Calendar.MINUTE, 2);
todayMidnight.set(Calendar.SECOND, 0);
AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent (context, CalendarWidget.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent,PendingIntent.FLAG_UPDATE_CURRENT);
alarm.setRepeating(AlarmManager.RTC, todayMidnight.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pendingIntent);
...
views.setTextViewText(R.id.todayDate,System.currentTimeMillis()+"");
В Manifest
<receiver
android:name="com.standardSPenPlannerInhoHwang.CalendarWidget"
android:theme="@android:style/Theme.Translucent"
android:process=":remote"
android:enabled="true">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="android.appwidget.action.APPWIDGET_ENABLED" />
<action android:name="android.intent.action.TIMEZONE_CHANGED" />
<action android:name="android.intent.action.TIME_SET" />
<action android:name="android.intent.action.DATE_CHANGED" />
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@layout/calendar_widget2" />
</receiver>
Но приложение не обновляется в 11:02 вечера !! Это должно работать, не так ли? (Просто заметьте, что меня обновляет виджет из моих действий, работает нормально. Это просто диспетчер аварийных сообщений, который не обновляет виджет!)
Да, я понял это с этим руководством http://code4reference.com/2012/07/android-homescreen- widget-with-alarmmanager /, но то, что вы сказали, правильно. Этот учебник идеален и работает очень хорошо. – coolcool1994
В WidgetProvider вам нужно, чтобы будильник вызывал ваш BroadcastReceiver. И в BroadcastReceiver вам нужно вызвать AppWidgetProvider для обновления виджета. – coolcool1994
Также странно, что вам нужны два метода onReceive. Один onReceive должен быть в вашем классе BroadcastReceiver - который запускается с сигналом тревоги. OnReceive в вашем приложении appwidgetprovider запускается, когда вы вызываете ваш ожидающий ввод кнопки, нажатой в вашем виджете. – coolcool1994