From 18d16a221116153d4df973cc0884dbedc70a6df1 Mon Sep 17 00:00:00 2001 From: klaus Date: Fri, 26 Jul 2024 01:43:00 +0900 Subject: [PATCH] =?UTF-8?q?sdk=2031=EC=9D=B4=EC=83=81=EC=97=90=EC=84=9C=20?= =?UTF-8?q?PendingIntent.FLAG=5FIMMUTABLE=20FLAG=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 +- .../mypage/alarm/scheduler/AlarmScheduler.kt | 42 +++++++++---------- 2 files changed, 21 insertions(+), 25 deletions(-) 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