Fixed missing pending intent IMMUTABLE flag causing crash on Android 12

This commit is contained in:
Sylvain Berfini 2021-09-09 11:58:38 +02:00
parent 2f912828ee
commit 9813c905c9
2 changed files with 29 additions and 8 deletions

View file

@ -218,7 +218,7 @@ dependencies {
implementation 'androidx.fragment:fragment-ktx:1.4.0-alpha08' implementation 'androidx.fragment:fragment-ktx:1.4.0-alpha08'
implementation 'androidx.core:core-ktx:1.7.0-alpha02' implementation 'androidx.core:core-ktx:1.7.0-alpha02'
def nav_version = "2.3.5" def nav_version = "2.4.0-alpha08"
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version" implementation "androidx.navigation:navigation-ui-ktx:$nav_version"

View file

@ -397,7 +397,12 @@ class NotificationsManager(private val context: Context) {
val incomingCallNotificationIntent = Intent(context, IncomingCallActivity::class.java) val incomingCallNotificationIntent = Intent(context, IncomingCallActivity::class.java)
incomingCallNotificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) incomingCallNotificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
val pendingIntent = PendingIntent.getActivity(context, 0, incomingCallNotificationIntent, PendingIntent.FLAG_UPDATE_CURRENT) val pendingIntent = PendingIntent.getActivity(
context,
0,
incomingCallNotificationIntent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
val notificationLayoutHeadsUp = RemoteViews(context.packageName, R.layout.call_incoming_notification_heads_up) val notificationLayoutHeadsUp = RemoteViews(context.packageName, R.layout.call_incoming_notification_heads_up)
notificationLayoutHeadsUp.setTextViewText(R.id.caller, displayName) notificationLayoutHeadsUp.setTextViewText(R.id.caller, displayName)
@ -545,7 +550,12 @@ class NotificationsManager(private val context: Context) {
val callNotificationIntent = Intent(context, callActivity) val callNotificationIntent = Intent(context, callActivity)
callNotificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) callNotificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
val pendingIntent = PendingIntent.getActivity(context, 0, callNotificationIntent, PendingIntent.FLAG_UPDATE_CURRENT) val pendingIntent = PendingIntent.getActivity(
context,
0,
callNotificationIntent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
val builder = NotificationCompat.Builder( val builder = NotificationCompat.Builder(
context, channelToUse context, channelToUse
@ -612,7 +622,12 @@ class NotificationsManager(private val context: Context) {
val target = Intent(context, ChatBubbleActivity::class.java) val target = Intent(context, ChatBubbleActivity::class.java)
target.putExtra("RemoteSipUri", peerAddress) target.putExtra("RemoteSipUri", peerAddress)
target.putExtra("LocalSipUri", localAddress) target.putExtra("LocalSipUri", localAddress)
val bubbleIntent = PendingIntent.getActivity(context, notifiable.notificationId, target, PendingIntent.FLAG_UPDATE_CURRENT) val bubbleIntent = PendingIntent.getActivity(
context,
notifiable.notificationId,
target,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
val id = LinphoneUtils.getChatRoomId(localAddress, peerAddress) val id = LinphoneUtils.getChatRoomId(localAddress, peerAddress)
val notification = createMessageNotification(notifiable, pendingIntent, bubbleIntent, id) val notification = createMessageNotification(notifiable, pendingIntent, bubbleIntent, id)
@ -816,7 +831,10 @@ class NotificationsManager(private val context: Context) {
answerIntent.putExtra(INTENT_REMOTE_ADDRESS, notifiable.remoteAddress) answerIntent.putExtra(INTENT_REMOTE_ADDRESS, notifiable.remoteAddress)
val answerPendingIntent = PendingIntent.getBroadcast( val answerPendingIntent = PendingIntent.getBroadcast(
context, notifiable.notificationId, answerIntent, PendingIntent.FLAG_UPDATE_CURRENT context,
notifiable.notificationId,
answerIntent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
) )
return NotificationCompat.Action.Builder( return NotificationCompat.Action.Builder(
@ -833,7 +851,10 @@ class NotificationsManager(private val context: Context) {
hangupIntent.putExtra(INTENT_REMOTE_ADDRESS, notifiable.remoteAddress) hangupIntent.putExtra(INTENT_REMOTE_ADDRESS, notifiable.remoteAddress)
val hangupPendingIntent = PendingIntent.getBroadcast( val hangupPendingIntent = PendingIntent.getBroadcast(
context, notifiable.notificationId, hangupIntent, PendingIntent.FLAG_UPDATE_CURRENT context,
notifiable.notificationId,
hangupIntent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
) )
return NotificationCompat.Action.Builder( return NotificationCompat.Action.Builder(
@ -859,7 +880,7 @@ class NotificationsManager(private val context: Context) {
context, context,
notifiable.notificationId, notifiable.notificationId,
replyIntent, replyIntent,
PendingIntent.FLAG_UPDATE_CURRENT PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
) )
return NotificationCompat.Action.Builder( return NotificationCompat.Action.Builder(
R.drawable.chat_send_over, R.drawable.chat_send_over,
@ -883,7 +904,7 @@ class NotificationsManager(private val context: Context) {
context, context,
notifiable.notificationId, notifiable.notificationId,
markAsReadIntent, markAsReadIntent,
PendingIntent.FLAG_UPDATE_CURRENT PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
) )
} }