diff --git a/app/build.gradle b/app/build.gradle index 96d3ece..6755d1c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -39,8 +39,8 @@ android { defaultConfig { applicationId "kr.co.vividnext.sodalive" minSdk 23 - targetSdk 34 - versionCode 84 + targetSdk 33 + versionCode 85 versionName "1.13.2" } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/mypage/alarm/scheduler/AlarmScheduler.kt b/app/src/main/java/kr/co/vividnext/sodalive/mypage/alarm/scheduler/AlarmScheduler.kt index 2c42a13..bd67da8 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/mypage/alarm/scheduler/AlarmScheduler.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/mypage/alarm/scheduler/AlarmScheduler.kt @@ -23,7 +23,7 @@ class AlarmScheduler(private val context: Context) { val alarmIntent = Intent(context, AlarmReceiver::class.java).let { intent -> intent.putExtra(Constants.EXTRA_ALARM_ID, alarm.id) - PendingIntent.getBroadcast(context, alarm.id, intent, PendingIntent.FLAG_UPDATE_CURRENT) + createPendingIntent(requestCode = alarm.id, intent) } val calendar = Calendar.getInstance() @@ -48,12 +48,7 @@ class AlarmScheduler(private val context: Context) { val requestCode = alarm.id * 10 + getDayOfWeek(day) val alarmIntent = Intent(context, AlarmReceiver::class.java).let { intent -> intent.putExtra(Constants.EXTRA_ALARM_ID, alarm.id) - PendingIntent.getBroadcast( - context, - requestCode, - intent, - PendingIntent.FLAG_UPDATE_CURRENT - ) + createPendingIntent(requestCode, intent) } val calendar = getNextAlarmTime(day, alarm.time) @@ -76,31 +71,32 @@ class AlarmScheduler(private val context: Context) { val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager if (alarm.days.isEmpty()) { - val alarmIntent = Intent(context, AlarmReceiver::class.java).let { intent -> - PendingIntent.getBroadcast( - context, - alarm.id, - intent, - PendingIntent.FLAG_UPDATE_CURRENT - ) - } + val alarmIntent = createPendingIntent( + requestCode = alarm.id, + intent = Intent(context, AlarmReceiver::class.java) + ) alarmManager.cancel(alarmIntent) } else { alarm.days.forEach { day -> val requestCode = alarm.id * 10 + getDayOfWeek(day) - val alarmIntent = Intent(context, AlarmReceiver::class.java).let { intent -> - PendingIntent.getBroadcast( - context, - requestCode, - intent, - PendingIntent.FLAG_UPDATE_CURRENT - ) - } + val alarmIntent = createPendingIntent( + requestCode, + Intent(context, AlarmReceiver::class.java) + ) alarmManager.cancel(alarmIntent) } } } + private fun createPendingIntent(requestCode: Int, intent: Intent): PendingIntent { + val flags = if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) { + PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE + } else { + PendingIntent.FLAG_UPDATE_CURRENT + } + return PendingIntent.getBroadcast(context, requestCode, intent, flags) + } + private fun getNextAlarmTime(day: String, timeInMillis: Long): Calendar { val calendar = Calendar.getInstance() calendar.timeInMillis = timeInMillis