skip to Main Content

So I’m developing this Android application which has many features, and one of them is the workout reminder. We used firebase database in setting up login authentication, and the user’s information.

Now for the last feature, I made a workout reminder which consists of Task Name and Time which also has a notification and. It only sets one alarm and I assume that if I applied and displayed it in a Recycler View, it will set multiple alarms. Unfortunately, it doesn’t. When the reminder is displayed in the Recycler View, and when I restart the application, the reminder is gone.

I just want to humbly ask if I need to store it in a database and then retrieve it?

Thank you in advance!

Here is my code below:

public class AlertReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    NotificationHelper notificationHelper = new NotificationHelper(context);
    NotificationCompat.Builder nb = notificationHelper.getChannel1Notification(reminderAddFragment.getTitle(), reminderAddFragment.getMessage());
    notificationHelper.getManager().notify(1, nb.build());
}

}

 private void startAlarm(Calendar cal) {
    AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(getActivity(), AlertReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity(), 1, intent, 0);

    alarmManager.setExact(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);
}

2

Answers


  1. Chosen as BEST ANSWER

    Solved it by setting different requestCode everytime I set an alarm.

    private void startAlarm(Calendar cal) {
        AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(getActivity(), AlertReceiver.class);
        final int id = (int) System.currentTimeMillis();
        PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity(), id, intent, PendingIntent.FLAG_MUTABLE);
    
        alarmManager.setExact(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);
    }
    

  2. Yes, you need to persist the state of alarms set by your app and display the same to the user. Once set we cannot retrieve the alarms set by the system at the app level. All we can do is dump them using adb shell using:

    adb shell dumpsys alarm > alarms_dump.txt
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search