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

Commit 2c29b86a authored by Zhaofeng Li's avatar Zhaofeng Li Committed by Gitsaibot
Browse files

Add mutability flags to PendingIntents

Android 12 (API level 31) now requires the use of mutability flags.
parent 6af6f133
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -112,6 +112,8 @@ public class AlertReceiver extends BroadcastReceiver {
    static PowerManager.WakeLock mStartingService;
    private static Handler sAsyncHandler;

    private static final int PI_FLAG_IMMUTABLE = Build.VERSION.SDK_INT >= 23 ? PendingIntent.FLAG_IMMUTABLE : 0;

    static {
        HandlerThread thr = new HandlerThread("AlertReceiver async");
        thr.start();
@@ -186,7 +188,7 @@ public class AlertReceiver extends BroadcastReceiver {
        ContentUris.appendId(builder, eventId);
        ContentUris.appendId(builder, startMillis);
        intent.setData(builder.build());
        return PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        return PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | PI_FLAG_IMMUTABLE);
    }

    private static PendingIntent createSnoozeIntent(Context context, long eventId,
@@ -204,10 +206,10 @@ public class AlertReceiver extends BroadcastReceiver {

        if (Utils.useCustomSnoozeDelay(context)) {
            intent.setClass(context, SnoozeDelayActivity.class);
            return PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
            return PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | PI_FLAG_IMMUTABLE);
        } else {
            intent.setClass(context, SnoozeAlarmsService.class);
            return PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
            return PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | PI_FLAG_IMMUTABLE);
        }
    }

@@ -216,7 +218,7 @@ public class AlertReceiver extends BroadcastReceiver {
        clickIntent.setClass(context, AlertActivity.class);
        clickIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        return PendingIntent.getActivity(context, 0, clickIntent,
                    PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_UPDATE_CURRENT);
                    PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_UPDATE_CURRENT | PI_FLAG_IMMUTABLE);
    }

    public static NotificationWrapper makeBasicNotification(Context context, String title,
@@ -398,7 +400,7 @@ public class AlertReceiver extends BroadcastReceiver {
        deleteIntent.putExtra(AlertUtils.EVENT_IDS_KEY, eventIds);
        deleteIntent.putExtra(AlertUtils.EVENT_STARTS_KEY, startMillis);
        PendingIntent pendingDeleteIntent = PendingIntent.getService(context, 0, deleteIntent,
                PendingIntent.FLAG_UPDATE_CURRENT);
                PendingIntent.FLAG_UPDATE_CURRENT | PI_FLAG_IMMUTABLE);

        if (digestTitle == null || digestTitle.length() == 0) {
            digestTitle = res.getString(R.string.no_title_label);
@@ -535,7 +537,7 @@ public class AlertReceiver extends BroadcastReceiver {
                        broadcastIntent.putExtra(EXTRA_EVENT_ID, eventId);
                        return PendingIntent.getBroadcast(context,
                                Long.valueOf(eventId).hashCode(), broadcastIntent,
                                PendingIntent.FLAG_CANCEL_CURRENT);
                                PendingIntent.FLAG_CANCEL_CURRENT | PI_FLAG_IMMUTABLE);
                    }
                } while (attendeesCursor.moveToNext());
            }
+6 −3
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.provider.CalendarContract;
import android.text.format.DateUtils;
import android.text.format.Time;
@@ -55,6 +56,8 @@ public class CalendarAppWidgetProvider extends AppWidgetProvider {
    // TODO Move these to Calendar.java
    static final String EXTRA_EVENT_IDS = "com.android.calendar.EXTRA_EVENT_IDS";

    private static final int PI_FLAG_IMMUTABLE = Build.VERSION.SDK_INT >= 23 ? PendingIntent.FLAG_IMMUTABLE : 0;

    /**
     * Build {@link ComponentName} describing this specific
     * {@link AppWidgetProvider}
@@ -76,7 +79,7 @@ public class CalendarAppWidgetProvider extends AppWidgetProvider {
        intent.setClass(context, CalendarAppWidgetService.CalendarFactory.class);
        intent.setDataAndType(CalendarContract.CONTENT_URI, Utils.APPWIDGET_DATA_TYPE);
        return PendingIntent.getBroadcast(context, 0 /* no requestCode */, intent,
                0 /* no flags */);
                PI_FLAG_IMMUTABLE);
    }

    /**
@@ -90,7 +93,7 @@ public class CalendarAppWidgetProvider extends AppWidgetProvider {
                Intent.FLAG_ACTIVITY_TASK_ON_HOME);
        launchIntent.setClass(context, AllInOneActivity.class);
        return PendingIntent.getActivity(context, 0 /* no requestCode */, launchIntent,
                PendingIntent.FLAG_UPDATE_CURRENT);
                PendingIntent.FLAG_UPDATE_CURRENT | PI_FLAG_IMMUTABLE);
    }

    /**
@@ -231,7 +234,7 @@ public class CalendarAppWidgetProvider extends AppWidgetProvider {
            launchCalendarIntent
                    .setData(Uri.parse("content://com.android.calendar/time/" + millis));
            final PendingIntent launchCalendarPendingIntent = PendingIntent.getActivity(
                    context, 0 /* no requestCode */, launchCalendarIntent, 0 /* no flags */);
                    context, 0 /* no requestCode */, launchCalendarIntent, PI_FLAG_IMMUTABLE);
            views.setOnClickPendingIntent(R.id.header, launchCalendarPendingIntent);

            // Each list item will call setOnClickExtra() to let the list know