코딩하는 일용직 노동자

Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent. 본문

안드로이드

Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.

bacass 2022. 7. 7. 22:17
targetSdk버전을 32로 바꾸니 못보던 에러메세지를 보게 되었습니다.
 
Caused by: java.lang.IllegalArgumentException: 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.
        at android.app.PendingIntent.checkFlags(PendingIntent.java:382)
        at android.app.PendingIntent.getBroadcastAsUser(PendingIntent.java:673)
        at android.app.PendingIntent.getBroadcast(PendingIntent.java:660)
OS가 Android12 이고 targetSdk버전이 31인 이상인 경우 PendingIntent생성시 FLAG_IMMUTABLE 나 FLAG_MUTABLE 을 지정해줘야 합니다.

PendingIntent.FLAG_MUTABLE 는 변경 가능
PendingIntent.FLAG_IMMUTABLE 는 변경 불가능 입니다.

PendingIntent.getActivity(context, 0, i, PendingIntent.FLAG_MUTABLE);
PendingIntent.getActivity(context, 0, i, PendingIntent.FLAG_IMMUTABLE);
이렇게 해도 에러가 계속 발생한다면 app레벨 gradle에 다음과 같이 dependencies를 추가해주셔야 합니다.

implementation "androidx.work:work-runtime:2.7.1" // java
implementation "androidx.work:work-runtime-ktx:2.7.1" // kotlin