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
I can't update the pending intent flag in android studio project coding
This is a place in AlarmPingSender.java where the error occurred
public void start()
{
String action = MqttServiceConstants.PING_SENDER
+ comms.getClient().getClientId();
Log.d(TAG, "Register alarmreceiver to MqttService"+ action);
service.registerReceiver(alarmReceiver, new IntentFilter(action));
pendingIntent = PendingIntent.getBroadcast(service, 0, new Intent(
action), PendingIntent.FLAG_UPDATE_CURRENT);
schedule(comms.getKeepAlive());
hasStarted = true;
}
Help me to fix the issue ERROR IN ANDROID STUDIO IMAGE
Use this two public methods when you want to create any PendingIntent
in your project
Create activity pendingIntent
public static PendingIntent createPendingIntentGetActivity(Context context, int id, Intent intent, int flag) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
return PendingIntent.getActivity(context, id, intent, PendingIntent.FLAG_IMMUTABLE | flag);
} else {
return PendingIntent.getActivity(context, id, intent, flag);
}
}
Create broadcast pendingIntent
public static PendingIntent createPendingIntentGetBroadCast(Context context, int id, Intent intent, int flag) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
return PendingIntent.getBroadcast(context, id, intent, PendingIntent.FLAG_IMMUTABLE | flag);
} else {
return PendingIntent.getBroadcast(context, id, intent, flag);
}
}
Kotlin answer:
fun getActivity(context: Context?, id: Int, intent: Intent?, flag: Int): PendingIntent {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
PendingIntent.getActivity(context, id, intent, PendingIntent.FLAG_MUTABLE or flag)
} else {
PendingIntent.getActivity(context, id, intent, flag)
}
}
fun getBroadcast(context: Context?, id: Int, intent: Intent?, flag: Int): PendingIntent {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
PendingIntent.getBroadcast(context, id, intent!!, PendingIntent.FLAG_MUTABLE or flag)
} else {
PendingIntent.getBroadcast(context, id, intent!!, flag)
}
}