Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b16eaca3 authored by Mohammed Althaf T's avatar Mohammed Althaf T 😊
Browse files

Fix PendingIntent mutability for Android 12+

parent e74e944d
Loading
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -52,7 +52,7 @@ public class TaskProviderBroadcastReceiver extends BroadcastReceiver {
        alarmIntent.setAction(ACTION_NOTIFICATION_ALARM);

        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, REQUEST_CODE_ALARM, alarmIntent,
                PendingIntent.FLAG_UPDATE_CURRENT);
                PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);

        // cancel any previous alarm
        am.cancel(pendingIntent);
+11 −12
Original line number Diff line number Diff line
@@ -89,14 +89,13 @@ public final class StaleListBroadcastReceiver extends BroadcastReceiver {
                    Resources.Theme theme = context.getTheme();
                    theme.applyStyle(context.getApplicationInfo().theme, true);

                    nm.notify("stale_list_broadacast", 0,
                            new Notification.Builder(context, "provider_messages")
                    nm.notify("stale_list_broadacast", 0, new Notification.Builder(context, "provider_messages")
                            .setContentText(notificationDescription)
                            .setContentIntent(PendingIntent.getActivity(context, 0, accountRequestIntent,
                                            PendingIntent.FLAG_UPDATE_CURRENT))
                                    PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE))
                            .addAction(new Notification.Action.Builder(null, "Grant",
                                    PendingIntent.getActivity(context, 0, accountRequestIntent,
                                                    PendingIntent.FLAG_UPDATE_CURRENT))
                                            PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE))
                                    .build())
                            .setColor(new AttributeColor(theme, androidx.appcompat.R.attr.colorPrimary).argb())
                            .setColorized(true).setSmallIcon(org.dmfs.tasks.provider.R.drawable.ic_24_opentasks)
+1 −1
Original line number Diff line number Diff line
@@ -49,6 +49,6 @@ public final class CancelDelayedAction implements TaskAction {
        ((AlarmManager) context.getSystemService(Context.ALARM_SERVICE))
                .cancel(PendingIntent.getBroadcast(context, (int) ContentUris.parseId(taskUri),
                        new Intent(context, ActionReceiver.class).setAction(mAction).setData(taskUri),
                        PendingIntent.FLAG_UPDATE_CURRENT));
                        PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE));
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -52,6 +52,6 @@ public final class DelayedAction implements TaskAction {
                AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + mDelayMillis,
                PendingIntent.getBroadcast(context, (int) ContentUris.parseId(taskUri),
                        new Intent(context, ActionReceiver.class).setAction(mAction).setData(taskUri),
                        PendingIntent.FLAG_UPDATE_CURRENT));
                        PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE));
    }
}
+13 −14
Original line number Diff line number Diff line
@@ -126,13 +126,13 @@ public final class NotifyAction implements TaskAction {
                new Intent(context, ActionReceiver.class).setAction(
                        pin ? ActionService.ACTION_OPEN_TASK : ActionService.ACTION_OPEN_TASK_CANCEL_NOTIFICATION)
                        .setData(taskUri),
                PendingIntent.FLAG_UPDATE_CURRENT));
                PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE));

        // make sure we un-persist the notification when its cancelled
        builder.setDeleteIntent(PendingIntent.getBroadcast(
                context, notificationId, new Intent(context, ActionReceiver.class)
                        .setAction(ActionService.ACTION_REMOVE_NOTIFICATION).setData(taskUri),
                PendingIntent.FLAG_UPDATE_CURRENT));
                PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE));

        if (!new TaskIsClosed(data).value()) {
            builder.addAction(new NotificationCompat.Action(R.drawable.ic_action_complete,
@@ -140,26 +140,25 @@ public final class NotifyAction implements TaskAction {
                    PendingIntent.getBroadcast(
                            context, 1, new Intent(context, ActionReceiver.class)
                                    .setAction(ActionService.ACTION_COMPLETE).setData(taskUri),
                            PendingIntent.FLAG_UPDATE_CURRENT)));
                            PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE)));

            if (new TaskDateTime(TaskContract.Tasks.DUE, data).isPresent()) {
                builder.addAction(new NotificationCompat.Action(R.drawable.ic_detail_delay_1d_inverse,
                        context.getString(R.string.notification_action_delay_1d),
                        PendingIntent.getBroadcast(
                                context, 1, new Intent(context, ActionReceiver.class)
                                        .setAction(ActionService.ACTION_DEFER_1D).setData(taskUri),
                                PendingIntent.FLAG_UPDATE_CURRENT)));
                        PendingIntent.getBroadcast(context, 1,
                                new Intent(context, ActionReceiver.class).setAction(ActionService.ACTION_DEFER_1D)
                                        .setData(taskUri),
                                PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE)));
            }
        }

        if (pin) {
            builder.addAction(
                    new NotificationCompat.Action(R.drawable.ic_pin_off_white_24dp,
            builder.addAction(new NotificationCompat.Action(R.drawable.ic_pin_off_white_24dp,
                    context.getString(R.string.notification_action_unpin),
                    PendingIntent.getBroadcast(
                                    context, 1, new Intent(context, ActionReceiver.class)
                                            .setAction(ActionService.ACTION_UNPIN).setData(taskUri),
                                    PendingIntent.FLAG_UPDATE_CURRENT)));
                            context, 1, new Intent(context, ActionReceiver.class).setAction(ActionService.ACTION_UNPIN)
                                    .setData(taskUri),
                            PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE)));
        }
        builder.setOnlyAlertOnce(!mRepost);
        builder.setOngoing(pin);
Loading