targeting s+ (version 31 and above) requires that one of flag_immutable or flag_mutable be specified when creating a pendingintent.
์ ๋ฌธ์ฅ์ ๊ทธ๋๋ก ํด์ํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
PendingIntent๋ฅผ ์์ฑํ ๋ s+(๋ฒ์ 31 ์ด์)๋ฅผ ํ๊ฒํ
ํ๋ ค๋ฉด flag_immutable ๋๋ flag_mutable ์ค ํ๋๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค.
์ค๋ฅ์ ์ถ๊ฐ ๋ด์ฉ์ด ์๋๋ฐ ๊ฐ๋จํ ๋ป์ ํด์ํด๋ณด๋ฉด Google ๋ฌธ์์์๋ ์ผ๋ถ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ PendingIntent์ ์์กดํ๋ ๊ฒฝ์ฐ์๋ง FLAG_MUTABLE์ ์ฌ์ฉํ๊ณ , ๋ค๋ฅธ ๊ฒฝ์ฐ์๋ FLAG_IMMUTABLE ์ฌ์ฉ์ ๊ฐ๋ ฅํ ๊ถ๊ณ ํ๋ค๊ณ ํ๋ค.
PendingIntent.getBroadcast(Context context, int requestCode, Intent intent, int flags)
๊ทธ๋์ PendingIntent์ ์๋ getBroadcast ๋ฅผ ์ฌ์ฉํ ๋, flags ๋ถ๋ถ์ ๋ณ๊ฒฝํด์ฃผ์ด์ผํ๋ค๋ ๊ฒ์ ์๊ฒ ๋์๊ณ , ํด๊ฒฐ๋ฐฉ์์ผ๋ก s+(๋ฒ์ 31 ์ด์)์ ๊ฒฝ์ฐ์๋ IMMUTABLE ํน์ MUTABLE์ ์ถ๊ฐํ๋๋ก ์ฝ๋๋ฅผ ์๋์ ๊ฐ์ด ์์ ํ์๋ค.
val ALARM_FLAG = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
} else {
PendingIntent.FLAG_UPDATE_CURRENT
}
val pendingIntent = PendingIntent.getBroadcast(
this,
id,
this, AlarmReceiver::class.java),
ALARM_FLAG
)