Skip to content
This repository has been archived by the owner on Jan 10, 2024. It is now read-only.

Commit

Permalink
Merge pull request #1429 from jfoerste/fixup-1427
Browse files Browse the repository at this point in the history
Add FLAG_IMMUTABLE to remaining PendingIntents
  • Loading branch information
kordianbruck authored Apr 24, 2022
2 parents 1c1c2b3 + 2e4f2a7 commit 58aa274
Show file tree
Hide file tree
Showing 13 changed files with 24 additions and 21 deletions.
6 changes: 4 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ apply from: '../gradle/scripts/checkstyle.gradle'
apply from: '../gradle/scripts/testLogging.gradle'

android {
compileSdkVersion 31
compileSdkVersion 32
buildTypes {
all {
proguardFiles(file('../proguard').listFiles())
Expand Down Expand Up @@ -144,6 +144,8 @@ dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
// Note: upgrading this and or androidx.appcompat:appcompat will break the toolbar
implementation 'androidx.fragment:fragment-ktx:1.2.5'
// Note: fix for internal androidx libraries using outdated WorkManager causing a crash
implementation "androidx.work:work-runtime-ktx:2.7.1"

// RxJava
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
Expand Down Expand Up @@ -179,7 +181,7 @@ dependencies {
kapt 'com.google.dagger:dagger-compiler:2.28.3'

// LeakCanary
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.4'
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.9.1'

// DebugDatabase
debugImplementation 'com.amitshekhar.android:debug-db:1.0.6'
Expand Down
1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
tools:ignore="UnusedAttribute">
<!-- Standard access rights -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- For google calendar synchronisation -->
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" /> <!-- To add searched person to contact list -->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ class NotificationScheduler @Inject constructor(private val context: Context) {
putExtra(Const.KEY_NOTIFICATION, futureNotification.notification)
}
return PendingIntent.getBroadcast(context,
futureNotification.id, intent, PendingIntent.FLAG_CANCEL_CURRENT)
futureNotification.id, intent, PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_CANCEL_CURRENT)
}

/**
Expand All @@ -171,7 +171,7 @@ class NotificationScheduler @Inject constructor(private val context: Context) {
val intent = Intent(context, NotificationAlarmReceiver::class.java).apply {
putExtra(Const.KEY_NOTIFICATION_TYPE_ID, type.id)
}
return PendingIntent.getBroadcast(context, type.id, intent, PendingIntent.FLAG_CANCEL_CURRENT)
return PendingIntent.getBroadcast(context, type.id, intent, PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_CANCEL_CURRENT)
}

companion object {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ class UpdatePushNotification(

val sound = Uri.parse("android.resource://${appContext.packageName}/${R.raw.message}")
val alarm = Intent(appContext, MainActivity::class.java)
val pending = PendingIntent.getActivity(appContext, 0, alarm, PendingIntent.FLAG_UPDATE_CURRENT)
val pending = PendingIntent.getActivity(appContext, 0, alarm, PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT)

val description = if (info.description.isNotEmpty()) {
info.description
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ class TimetableWidget : AppWidgetProvider() {
override fun onDisabled(context: Context) {
// Cancel alarm as the last widget has been removed
val intent = Intent(context, TimetableWidget::class.java)
val sender = PendingIntent.getBroadcast(context, 0, intent, 0)
val sender = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_IMMUTABLE)
val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager?
if (alarmManager != null) {
alarmManager.cancel(sender)
Expand Down Expand Up @@ -66,7 +66,7 @@ class TimetableWidget : AppWidgetProvider() {

val intent = Intent(context, TimetableWidget::class.java)
intent.action = BROADCAST_UPDATE_TIMETABLE_WIDGETS
val pi = PendingIntent.getBroadcast(context, 0, intent, 0)
val pi = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_IMMUTABLE)

val am = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager?
if (am != null) {
Expand Down Expand Up @@ -113,20 +113,20 @@ class TimetableWidget : AppWidgetProvider() {
val configIntent = Intent(context, TimetableWidgetConfigureActivity::class.java)
configIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId)
val pendingConfigIntent = PendingIntent.getActivity(
context, appWidgetId, configIntent, PendingIntent.FLAG_UPDATE_CURRENT)
context, appWidgetId, configIntent, PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT)
remoteViews.setOnClickPendingIntent(R.id.timetable_widget_setting, pendingConfigIntent)

// Set up the calendar activity listeners
val calendarIntent = Intent(context, CalendarActivity::class.java)
val pendingCalendarIntent = PendingIntent.getActivity(
context, appWidgetId, calendarIntent, PendingIntent.FLAG_UPDATE_CURRENT)
context, appWidgetId, calendarIntent, PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT)
remoteViews.setOnClickPendingIntent(R.id.timetable_widget_header, pendingCalendarIntent)

// Set up the calendar intent used when the user taps an event
val eventIntent = Intent(context, CalendarActivity::class.java)
eventIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId)
val eventPendingIntent = PendingIntent.getActivity(
context, appWidgetId, eventIntent, PendingIntent.FLAG_UPDATE_CURRENT)
context, appWidgetId, eventIntent, PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT)
remoteViews.setPendingIntentTemplate(R.id.timetable_widget_listview, eventPendingIntent)

// Set up the intent that starts the TimetableWidgetService, which will
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,11 @@ class GradesNotificationProvider(
R.plurals.new_grades_format_string, size, size, formattedNewGrades)

val intent = GradesActivity.newIntent(context)
val pendingIntent = PendingIntent.getActivity(context, 0, intent, FLAG_UPDATE_CURRENT)
val pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE or FLAG_UPDATE_CURRENT)

val deleteIntent = GradeNotificationDeleteReceiver.newIntent(context, newGrades)
val deletePendingIntent = PendingIntent.getBroadcast(
context, DELETE_REQUEST_CODE, deleteIntent, PendingIntent.FLAG_UPDATE_CURRENT)
context, DELETE_REQUEST_CODE, deleteIntent, PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT)

val notification = getNotificationBuilder()
.setContentTitle(title)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ class CafeteriaNotificationProvider(context: Context) : NotificationProvider(con
}

val pendingIntent = PendingIntent.getActivity(
context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
context, 0, intent, PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT)

val summaryNotification = getNotificationBuilder()
.setContentTitle(title)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class NewsNotificationProvider(

val intent = Intent(context, NewsActivity::class.java)
val pendingIntent = PendingIntent.getActivity(
context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
context, 0, intent, PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT)

val notification = getNotificationBuilder()
.setContentTitle(summaryTitle)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class TransportNotificationProvider(context: Context) : NotificationProvider(con

val intent = station.getIntent(context)
val pendingIntent = PendingIntent.getActivity(
context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
context, 0, intent, PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT)

val notification = getNotificationBuilder()
.setContentTitle(title)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ class MVVWidget : AppWidgetProvider() {
}

val intent = Intent(context, MVVWidget::class.java)
val sender = PendingIntent.getBroadcast(context, 0, intent, 0)
val sender = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_IMMUTABLE)
val alarmManager = context.alarmManager
alarmManager.cancel(sender)
if (autoReload) {
Expand Down Expand Up @@ -114,7 +114,7 @@ class MVVWidget : AppWidgetProvider() {
putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId)
}
val pendingIntent = PendingIntent.getActivity(
context, appWidgetId, configIntent, PendingIntent.FLAG_UPDATE_CURRENT)
context, appWidgetId, configIntent, PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT)
remoteViews.setOnClickPendingIntent(R.id.mvv_widget_setting_button, pendingIntent)

// Set up the reload functionality
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ class GeofencingRegistrationService : JobIntentService() {
val request = intent.getParcelableExtra<GeofencingRequest>(Const.ADD_GEOFENCE_EXTRA) ?: return
val geofenceIntent = Intent(this, GeofencingUpdateReceiver::class.java)
val geofencePendingIntent = PendingIntent.getBroadcast(
this, 0, geofenceIntent, PendingIntent.FLAG_UPDATE_CURRENT)
this, 0, geofenceIntent, PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT)

locationClient.addGeofences(request, geofencePendingIntent)
Utils.log("Registered new Geofence")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,8 @@ class ScanResultsAvailableReceiver : BroadcastReceiver() {
val setupIntent = Intent(context, SetupEduroamActivity::class.java)
val hideIntent = Intent(context, NeverShowAgainService::class.java)

val setupPendingIntent = PendingIntent.getActivity(context, 0, setupIntent, PendingIntent.FLAG_UPDATE_CURRENT)
val hidePendingIntent = PendingIntent.getService(context, 0, hideIntent, PendingIntent.FLAG_UPDATE_CURRENT)
val setupPendingIntent = PendingIntent.getActivity(context, 0, setupIntent, PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT)
val hidePendingIntent = PendingIntent.getService(context, 0, hideIntent, PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT)

// Create FcmNotification using NotificationCompat.Builder
val notification = NotificationCompat.Builder(context, Const.NOTIFICATION_CHANNEL_EDUROAM)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ class SilenceService : JobIntentService() {

val alarmManager = this.getSystemService(Context.ALARM_SERVICE) as AlarmManager
val newIntent = Intent(this, SilenceService::class.java)
val pendingIntent = PendingIntent.getService(this, 0, newIntent, PendingIntent.FLAG_UPDATE_CURRENT)
val pendingIntent = PendingIntent.getService(this, 0, newIntent, PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT)

val startTime = System.currentTimeMillis()
var waitDuration = CHECK_INTERVAL.toLong()
Expand Down

0 comments on commit 58aa274

Please sign in to comment.