В приведенном ниже коде, это делает главное, что я хочу до сих пор: - Повторяется каждый час, в то же времяAlarmManager для Android
Может кто-то проверить, является ли или то, что мне нужно сделать, чтобы убедиться следующие пункты?
(1) Тревога в конечном итоге будет основана на днях месяца. Пока он гаснет, когда они разбудят свой телефон (чтобы сэкономить аккумулятор). Это не час или минута. Только день. Как это можно достичь?
(2) Если действие уничтожено или телефон перезагружен, я не уверен, что мой AlarmManager бодрствует?
(3) Наконец, этот код повторяется каждый раз при запуске приложения (таким образом, перезаписать существующие AlarmManagers, это правильный способ делать вещи, или я должен проверить, чтобы увидеть, если Alarm существует
for (int i : AlarmDays) {
if (String.valueOf(i) == null) {
continue;
}
Calendar cal = Calendar.getInstance();
if (cal.get(Calendar.MINUTE) >= i)
cal.add(Calendar.HOUR, 1);
cal.set(Calendar.MINUTE, i);
Intent intent = new Intent(this, TimeAlarm.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, i,
intent, PendingIntent.FLAG_CANCEL_CURRENT);
am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
60 * 60 * 1000, pendingIntent);
}
// TimeAlarm.class
public void onReceive(Context context, Intent intent) {
String DebtName = null;
nm = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
CharSequence from = "Payment Due";
CharSequence message = "Open App and Update your Balance";
Intent notificationIntent = new Intent(context, ManageDebts.class);
notificationIntent.getExtras();
PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
notificationIntent, 0);
Notification notif = new Notification(R.drawable.icon, "Pay "
+ DebtName + " today!", System.currentTimeMillis());
notif.setLatestEventInfo(context, from, message, contentIntent);
notif.defaults = Notification.DEFAULT_SOUND
| Notification.DEFAULT_LIGHTS;
nm.notify(1, notif);
}
?
И в моем приложении тег в моем манифесте:
EDIT:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<Application>
<receiver
android:name=".TimeAlarm"
android:enabled="true"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</Application>
Спасибо за ответ. Я попытался реализовать вашу третью пулю в манифесте и обновил код выше в сторону дна. Теперь я получаю уведомление каждый раз, когда устройство перезагружается, а не ждет точную минуту часа. Любые мысли по этому поводу? – KickingLettuce
Уверен, вам нужно сделать расчет, чтобы определить, когда планировать будильник! –
Выполняя больше исследований, кажется, мне нужно сделать отдельный «загрузочный приемник», чтобы выдать эти вычисления, когда устройство перезагрузится. Это верно? – KickingLettuce