Explicitly define mutability for PendingIntents

This commit is contained in:
Moez Bhatti
2022-12-12 18:25:46 -05:00
parent 2c332c06b6
commit 634f04b7aa
8 changed files with 22 additions and 22 deletions
@@ -73,7 +73,7 @@ public class DownloadManager {
download.putExtra(MmsReceivedReceiver.EXTRA_TRIGGER_PUSH, byPush);
download.putExtra(MmsReceivedReceiver.EXTRA_URI, uri);
final PendingIntent pendingIntent = PendingIntent.getBroadcast(
context, 0, download, PendingIntent.FLAG_CANCEL_CURRENT);
context, 0, download, PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE);
final SmsManager smsManager = SmsManagerFactory.INSTANCE.createSmsManager(subscriptionId);
Bundle configOverrides = new Bundle();
@@ -309,7 +309,7 @@ public class RetryScheduler implements Observer {
Intent service = new Intent(TransactionService.ACTION_ONALARM,
null, context, TransactionService.class);
PendingIntent operation = PendingIntent.getService(
context, 0, service, PendingIntent.FLAG_ONE_SHOT);
context, 0, service, PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_IMMUTABLE);
AlarmManager am = (AlarmManager) context.getSystemService(
Context.ALARM_SERVICE);
am.set(AlarmManager.RTC, retryAt, operation);
@@ -101,7 +101,7 @@ class Transaction @JvmOverloads constructor(private val context: Context, settin
sentIntent.putExtra(EXTRA_CONTENT_URI, messageUri.toString())
sentIntent.putExtra(EXTRA_FILE_PATH, sendFile.path)
val sentPI = PendingIntent.getBroadcast(context, 0, sentIntent, PendingIntent.FLAG_CANCEL_CURRENT)
val sentPI = PendingIntent.getBroadcast(context, 0, sentIntent, PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_IMMUTABLE)
val updatedIntent = Intent(MMS_UPDATED).putExtra("uri", messageUri.toString())
BroadcastUtils.addClassName(context, updatedIntent, MMS_UPDATED)
@@ -29,7 +29,7 @@ class AlarmManagerImpl @Inject constructor(private val context: Context) : Alarm
override fun getScheduledMessageIntent(id: Long): PendingIntent {
val intent = Intent(context, SendScheduledMessageReceiver::class.java).putExtra("id", id)
return PendingIntent.getBroadcast(context, id.toInt(), intent, PendingIntent.FLAG_UPDATE_CURRENT)
return PendingIntent.getBroadcast(context, id.toInt(), intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
}
override fun setAlarm(date: Long, intent: PendingIntent) {
@@ -445,13 +445,13 @@ class MessageRepositoryImpl @Inject constructor(
val sentIntents = parts.map {
val intent = Intent(context, SmsSentReceiver::class.java).putExtra("id", message.id)
PendingIntent.getBroadcast(context, message.id.toInt(), intent, PendingIntent.FLAG_UPDATE_CURRENT)
PendingIntent.getBroadcast(context, message.id.toInt(), intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
}
val deliveredIntents = parts.map {
val intent = Intent(context, SmsDeliveredReceiver::class.java).putExtra("id", message.id)
val pendingIntent = PendingIntent
.getBroadcast(context, message.id.toInt(), intent, PendingIntent.FLAG_UPDATE_CURRENT)
.getBroadcast(context, message.id.toInt(), intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
if (prefs.delivery.get()) pendingIntent else null
}
@@ -495,7 +495,7 @@ class MessageRepositoryImpl @Inject constructor(
private fun getIntentForDelayedSms(id: Long): PendingIntent {
val intent = Intent(context, SendSmsReceiver::class.java).putExtra("id", id)
return PendingIntent.getBroadcast(context, id.toInt(), intent, PendingIntent.FLAG_UPDATE_CURRENT)
return PendingIntent.getBroadcast(context, id.toInt(), intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
}
override fun insertSentSms(subId: Int, threadId: Long, address: String, body: String, date: Long): Message {
@@ -99,11 +99,11 @@ class NightModeManager @Inject constructor(
private fun updateAlarms() {
val dayCalendar = createCalendar(prefs.nightEnd.get())
val day = Intent(context, NightModeReceiver::class.java)
val dayIntent = PendingIntent.getBroadcast(context, 0, day, 0)
val dayIntent = PendingIntent.getBroadcast(context, 0, day, PendingIntent.FLAG_IMMUTABLE)
val nightCalendar = createCalendar(prefs.nightStart.get())
val night = Intent(context, NightModeReceiver::class.java)
val nightIntent = PendingIntent.getBroadcast(context, 1, night, 0)
val nightIntent = PendingIntent.getBroadcast(context, 1, night, PendingIntent.FLAG_IMMUTABLE)
context.sendBroadcast(day)
context.sendBroadcast(night)
@@ -114,11 +114,11 @@ class NotificationManagerImpl @Inject constructor(
val taskStackBuilder = TaskStackBuilder.create(context)
.addParentStack(ComposeActivity::class.java)
.addNextIntent(contentIntent)
val contentPI = taskStackBuilder.getPendingIntent(threadId.toInt(), PendingIntent.FLAG_UPDATE_CURRENT)
val contentPI = taskStackBuilder.getPendingIntent(threadId.toInt(), PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
val seenIntent = Intent(context, MarkSeenReceiver::class.java).putExtra("threadId", threadId)
val seenPI = PendingIntent.getBroadcast(context, threadId.toInt(), seenIntent,
PendingIntent.FLAG_UPDATE_CURRENT)
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
// We can't store a null preference, so map it to a null Uri if the pref string is empty
val ringtone = prefs.ringtone(threadId).get()
@@ -233,7 +233,7 @@ class NotificationManagerImpl @Inject constructor(
Preferences.NOTIFICATION_ACTION_ARCHIVE -> {
val intent = Intent(context, MarkArchivedReceiver::class.java).putExtra("threadId", threadId)
val pi = PendingIntent.getBroadcast(context, threadId.toInt(), intent,
PendingIntent.FLAG_UPDATE_CURRENT)
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
NotificationCompat.Action.Builder(R.drawable.ic_archive_white_24dp, actionLabels[action], pi)
.setSemanticAction(NotificationCompat.Action.SEMANTIC_ACTION_ARCHIVE).build()
}
@@ -244,7 +244,7 @@ class NotificationManagerImpl @Inject constructor(
.putExtra("threadId", threadId)
.putExtra("messageIds", messageIds)
val pi = PendingIntent.getBroadcast(context, threadId.toInt(), intent,
PendingIntent.FLAG_UPDATE_CURRENT)
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
NotificationCompat.Action.Builder(R.drawable.ic_delete_white_24dp, actionLabels[action], pi)
.setSemanticAction(NotificationCompat.Action.SEMANTIC_ACTION_DELETE).build()
}
@@ -252,7 +252,7 @@ class NotificationManagerImpl @Inject constructor(
Preferences.NOTIFICATION_ACTION_BLOCK -> {
val intent = Intent(context, BlockThreadReceiver::class.java).putExtra("threadId", threadId)
val pi = PendingIntent.getBroadcast(context, threadId.toInt(), intent,
PendingIntent.FLAG_UPDATE_CURRENT)
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
NotificationCompat.Action.Builder(R.drawable.ic_block_white_24dp, actionLabels[action], pi)
.setSemanticAction(NotificationCompat.Action.SEMANTIC_ACTION_MUTE).build()
}
@@ -260,7 +260,7 @@ class NotificationManagerImpl @Inject constructor(
Preferences.NOTIFICATION_ACTION_READ -> {
val intent = Intent(context, MarkReadReceiver::class.java).putExtra("threadId", threadId)
val pi = PendingIntent.getBroadcast(context, threadId.toInt(), intent,
PendingIntent.FLAG_UPDATE_CURRENT)
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
NotificationCompat.Action.Builder(R.drawable.ic_check_white_24dp, actionLabels[action], pi)
.setSemanticAction(NotificationCompat.Action.SEMANTIC_ACTION_MARK_AS_READ).build()
}
@@ -271,7 +271,7 @@ class NotificationManagerImpl @Inject constructor(
} else {
val intent = Intent(context, QkReplyActivity::class.java).putExtra("threadId", threadId)
val pi = PendingIntent.getActivity(context, threadId.toInt(), intent,
PendingIntent.FLAG_UPDATE_CURRENT)
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
NotificationCompat.Action
.Builder(R.drawable.ic_reply_white_24dp, actionLabels[action], pi)
.setSemanticAction(NotificationCompat.Action.SEMANTIC_ACTION_REPLY).build()
@@ -283,7 +283,7 @@ class NotificationManagerImpl @Inject constructor(
val intentAction = if (permissions.hasCalling()) Intent.ACTION_CALL else Intent.ACTION_DIAL
val intent = Intent(intentAction, Uri.parse("tel:$address"))
val pi = PendingIntent.getActivity(context, threadId.toInt(), intent,
PendingIntent.FLAG_UPDATE_CURRENT)
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
NotificationCompat.Action.Builder(R.drawable.ic_call_white_24dp, actionLabels[action], pi)
.setSemanticAction(NotificationCompat.Action.SEMANTIC_ACTION_CALL).build()
}
@@ -337,7 +337,7 @@ class NotificationManagerImpl @Inject constructor(
val taskStackBuilder = TaskStackBuilder.create(context)
.addParentStack(ComposeActivity::class.java)
.addNextIntent(contentIntent)
val contentPI = taskStackBuilder.getPendingIntent(threadId.toInt(), PendingIntent.FLAG_UPDATE_CURRENT)
val contentPI = taskStackBuilder.getPendingIntent(threadId.toInt(), PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
val notification = NotificationCompat.Builder(context, getChannelIdForNotification(threadId))
.setContentTitle(context.getString(R.string.notification_message_failed_title))
@@ -357,7 +357,7 @@ class NotificationManagerImpl @Inject constructor(
private fun getReplyAction(threadId: Long): NotificationCompat.Action {
val replyIntent = Intent(context, RemoteMessagingReceiver::class.java).putExtra("threadId", threadId)
val replyPI = PendingIntent.getBroadcast(context, threadId.toInt(), replyIntent,
PendingIntent.FLAG_UPDATE_CURRENT)
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_MUTABLE)
val title = context.resources.getStringArray(R.array.notification_actions)[
Preferences.NOTIFICATION_ACTION_REPLY]
@@ -140,17 +140,17 @@ class WidgetProvider : AppWidgetProvider() {
// Main intent
val mainIntent = Intent(context, MainActivity::class.java)
val mainPI = PendingIntent.getActivity(context, 0, mainIntent, PendingIntent.FLAG_UPDATE_CURRENT)
val mainPI = PendingIntent.getActivity(context, 0, mainIntent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
remoteViews.setOnClickPendingIntent(R.id.title, mainPI)
// Compose intent
val composeIntent = Intent(context, ComposeActivity::class.java)
val composePI = PendingIntent.getActivity(context, 0, composeIntent, PendingIntent.FLAG_UPDATE_CURRENT)
val composePI = PendingIntent.getActivity(context, 0, composeIntent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
remoteViews.setOnClickPendingIntent(R.id.compose, composePI)
// Conversation intent
val startActivityIntent = Intent(context, MainActivity::class.java)
val startActivityPendingIntent = PendingIntent.getActivity(context, 0, startActivityIntent, PendingIntent.FLAG_UPDATE_CURRENT)
val startActivityPendingIntent = PendingIntent.getActivity(context, 0, startActivityIntent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
remoteViews.setPendingIntentTemplate(R.id.conversations, startActivityPendingIntent)
AppWidgetManager.getInstance(context).updateAppWidget(appWidgetId, remoteViews)