본문 바로가기

프로그래밍

[Kotlin] 안드로이드 알람 매니저 알람설정

반응형

알람을 설정하기전 

Calendar 클래스를 이용해 알람시간을 정합니다.

var calendar = Calendar.getInstance()
calendar.set(Calendar.YEAR, 2020)
calendar.set(Calendar.MONTH, 3)
calendar.set(Calendar.DAY_OF_MONTH, 27)
calendar.set(Calendar.HOUR_OF_DAY, 11)
calendar.set(Calendar.MINUTE, 30)
calendar.set(Calendar.SECOND, 0)

2020년 3월 27일 11시 30분 0초에 알람

 

 

알람설정

 

AlarmManager을 이용해 알람을 설정합니다.

안드로이드 버전별로 알람을 설정할 수 있습니다.

// 알람 Intent
val alarmIntent = Intent(context, AlarmBroadcastReceiver::class.java).apply {
	action = "com.check.up.setAlarm" // 액션
}

alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
var pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, PendingIntent.FLAG_CANCEL_CURRENT)

if (Build.VERSION.SDK_INT >= 23) { // 버전별로 알람설정
	alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, calendar.timeInMillis, pendingIntent)
} 
else {
	if (Build.VERSION.SDK_INT >= 19) {
		alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.timeInMillis, pendingIntent)
	} else {
		alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.timeInMillis, pendingIntent)
    }
}

 

alarmManager.set(AlarmManager.RTC_WAKEUP, time, pendingIntent) 알람매니저로 알람을 설정합니다.

time은 Long 타입입니다.

 

 

 

알람취소

 

AlarmManager을 이용해 알람을 취소합니다.

val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
val alarmIntent = Intent(context, alarmReceiver).apply {
	action = "com.check.up.setAlarm"
}
val pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, PendingIntent.FLAG_CANCEL_CURRENT)
alarmManager.cancel(pendingIntent) // 알람취소
pendingIntent.cancel() // PendingIntent 취소

       

알람을 취소할때는 PendingIntent requestCode가 알람설정 했을때와 같은 값이어야 합니다.

그런데 requestCode가 같은데 취소가 불가 하다면 알람설정 했을때 Intent 액션값과 똑같이 인텐트에 추가하여야 합니다.

반응형