HypoAlarm/HypoAlarm/src/main/java/za/org/treehouse/hypoalarm/CancelAlarmReceiver.java

48 lines
2.0 KiB
Java

package za.org.treehouse.hypoalarm;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build;
import android.preference.PreferenceManager;
import android.util.Log;
import android.widget.Toast;
import java.util.Calendar;
public class CancelAlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
String alarmTimeStr = sharedPref.getString(context.getString(R.string.AlarmTimePref), null);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent alarmIntent = new Intent(context, AlarmReceiver.class);
PendingIntent alarmPendingIntent = PendingIntent.getBroadcast(context, MainActivity.ALARM_REQUEST, alarmIntent, 0);
alarmManager.cancel(alarmPendingIntent);
Log.d("CancelAlarmReceiver", "Cancelled grace alarm");
// Reset alarm for tomorrow
// Reset for tomorrow; as of API 19, setRepeating() is inexact, so we use setExact()
Calendar cal = MainActivity.TimeStringToCalendar(alarmTimeStr);
// Set for tomorrow
cal.add(Calendar.DAY_OF_MONTH, 1);
if (Build.VERSION.SDK_INT >= 19) {
alarmManager.setExact(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), alarmPendingIntent);
} else {
alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), alarmPendingIntent);
}
Log.d("CancelAlarmReceiver", "Resetting alarm for " + MainActivity.debugDate(cal));
// Display toast
Toast.makeText(context, context.getString(R.string.alarmCancelToast), Toast.LENGTH_LONG).show();
// Remove notification
context.stopService(new Intent(context, PreAlarmNotify.class));
}
}