You are using this code to determine if the alarm is set or not:
boolean alarmUp = (PendingIntent.getBroadcast(ctx, 1, new Intent(ctx,Alaram_Receiver.class).setAction(Utility.SCHEDULE_ACTION),
PendingIntent.FLAG_NO_CREATE) != null);
This code relies on the presence of the PendingIntent
to determine if the alarm is scheduled or not.
When you cancel the alarm you do this:
PendingIntent pendingIntent = PendingIntent.getBroadcast(ctx, 1,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) ctx
.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
This cancels the alarm, but does not remove the PendingIntent
from the system. Since you rely on the presence/absence of the PendingIntent
to know if the alarm has been scheduled or not you also need to cancel the PendingIntent
so that it will be removed from the system. Do that like this (after you cancel the alarm):
pendingIntent.cancel();