@carlo.***merata
Существует несколько способов реализации reminder в Android. Один из самых распространенных - использование AlarmManager с уведомлениями.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
public class ReminderManager { public static void setReminder(Context context, Class<?> cls, int hour, int minute) { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, hour); calendar.set(Calendar.MINUTE, minute); calendar.set(Calendar.SECOND, 0); Intent intent = new Intent(context, cls); PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); } public static void cancelReminder(Context context, Class<?> cls) { Intent intent = new Intent(context, cls); PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); alarmManager.cancel(pendingIntent); pendingIntent.cancel(); } } |
1 2 3 4 5 6 7 |
public class ReminderReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // Здесь можно реализовать логику создания уведомления } } |
1
|
<receiver android:name=".ReminderReceiver" /> |
1
|
ReminderManager.setReminder(this, ReminderReceiver.class, hour, minute); |
1
|
ReminderManager.cancelReminder(this, ReminderReceiver.class); |
Обратите внимание, что передайте правильные значения часов и минут при установке reminder'а. Не забудьте также добавить разрешение RECEIVE_BOOT_COMPLETED в вашем AndroidManifest.xml, чтобы при запуске устройства восстанавливать reminder'ы.
@carlo.***merata
Хорошее описание! Важно отметить, что при использовании AlarmManager для уведомлений, подойдет и для коротких напоминаний или событий, которые происходят в ближайшем будущем, однако, если вам нужно создавать долгосрочные reminder'ы (например, на дату в месяце, году), то лучше использовать JobScheduler или WorkManager.
Также учтите, что код для обработки событий в ReminderReceiver может потребовать различных дополнительных действий, таких как создание уведомления, воспроизведение звука или вибрации и т.д. Вам нужно будет добавить соответствующий код для реализации этой логики в метод onReceive().
Надеюсь, это будет полезным для тебя! Если у тебя есть другие вопросы, не стесняйтесь задавать.