프로그래밍/android

[Android 12] Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE

-샤리- 2021. 11. 18. 22:19

Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent. Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.

 

위와 같은 메시지가 발견되었다면 PendingIntent를 사용하는 구문에서 오류가 발생했을 가능성이 높다. 나의 경우 foregroundService를 알리기 위해 NotificationCompat.Builder에 연결시켜 주다가 위와 같은 런타임 오류가 발생하여 아래와 같이 해결했다.

// 기존 코드
// val contentIntent = PendingIntent.getActivity(this, 0, resume, 0)
// 해결
val contentIntent = PendingIntent.getActivity(this, 0, resume, PendingIntent.FLAG_IMMUTABLE)

PendingIntent.FLAG_IMMUTABLE 또는 PendingIntent.FLAG_MUTABLE을 사용하면 된다.