Android アプリ開発 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.
Androidアプリの開発で以下のクラッシュが発生した時の解決方法
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.
Android OSバージョン 12で動作確認をすると、上記のメッセージが出て、アプリが落ちる現象が発生しました。
これは、Target SDK 31(Android OSバージョン 12)から PendingIntent のmutability(可変性)の指定が必須となったにもかかわらず、指定していなかったことが原因でしたので下記のように修正しました。
if (Build.VERSION.SDK_INT >= 31) {
// AndroidOSバージョンが12.0以上の端末用
sender = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_IMMUTABLE);
} else {
// それ以外の端末用
sender = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
}
あと、「build.gradle(app)」ファイルの「dependencies」に、下記を追記すれば無事解決しました。
dependencies {
implementation 'androidx.work:work-runtime-ktx:2.8.1'
}