Add the FLAG_IMMUTABLE flag for creating a PendingIntent

- Android S+ to specify explicitly either FLAG_MUTABLE or FLAG_IMMUTABLE
  when creating a PendingIntent.

Fixes: 170162598
Fixes: 170162878
Fixes: 170163592
Fixes: 170164316
Fixes: 170164458
Fixes: 170164327
Fixes: 169794524
Fixes: 170165106
Test: build pass and manual test add an account
Change-Id: I0f7b117273647dbe9e146033b8995c8c6f147576
This commit is contained in:
Sunny Shao
2020-10-06 11:46:08 +08:00
parent 98c7ad9953
commit 334968c113
8 changed files with 16 additions and 12 deletions

View File

@@ -247,7 +247,8 @@ public class AddAccountSettings extends Activity {
identityIntent.setAction(SHOULD_NOT_RESOLVE);
identityIntent.addCategory(SHOULD_NOT_RESOLVE);
mPendingIntent = PendingIntent.getBroadcast(this, 0, identityIntent, 0);
mPendingIntent = PendingIntent.getBroadcast(this, 0, identityIntent,
PendingIntent.FLAG_IMMUTABLE);
addAccountOptions.putParcelable(KEY_CALLER_IDENTITY, mPendingIntent);
addAccountOptions.putBoolean(EXTRA_HAS_MULTIPLE_USERS, Utils.hasMultipleUsers(this));
AccountManager.get(this).addAccountAsUser(

View File

@@ -129,13 +129,13 @@ public class BluetoothSliceBuilder {
private static PendingIntent getPrimaryAction(Context context) {
final Intent intent = getIntent(context);
return PendingIntent.getActivity(context, 0 /* requestCode */,
intent, 0 /* flags */);
intent, PendingIntent.FLAG_IMMUTABLE);
}
private static PendingIntent getBroadcastIntent(Context context) {
final Intent intent = new Intent(ACTION_BLUETOOTH_SLICE_CHANGED)
.setClass(context, SliceBroadcastReceiver.class);
return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
}
}

View File

@@ -163,7 +163,8 @@ public class BatteryFixSlice implements CustomSliceable {
private PendingIntent getPrimaryAction() {
final Intent intent = getIntent();
return PendingIntent.getActivity(mContext, 0 /* requestCode */, intent, 0 /* flags */);
return PendingIntent.getActivity(mContext, 0 /* requestCode */, intent,
PendingIntent.FLAG_IMMUTABLE);
}
private Slice buildBatteryGoodSlice(ListBuilder sliceBuilder, boolean isError) {

View File

@@ -116,8 +116,8 @@ public class LowStorageSlice implements CustomSliceable {
private RowBuilder buildRowBuilder(CharSequence title, String summary, IconCompat icon) {
final SliceAction primarySliceAction = SliceAction.createDeeplink(
PendingIntent.getActivity(mContext, 0, getIntent(), 0), icon,
ListBuilder.ICON_IMAGE, title);
PendingIntent.getActivity(mContext, 0, getIntent(), PendingIntent.FLAG_IMMUTABLE),
icon, ListBuilder.ICON_IMAGE, title);
return new RowBuilder()
.setTitleItem(icon, ListBuilder.ICON_IMAGE)

View File

@@ -96,6 +96,6 @@ public class LocationSlice implements CustomSliceable {
private PendingIntent getPrimaryAction() {
final Intent intent = getIntent();
return PendingIntent.getActivity(mContext, 0 /* requestCode */,
intent, 0 /* flags */);
intent, PendingIntent.FLAG_IMMUTABLE);
}
}

View File

@@ -142,13 +142,14 @@ public class ZenModeSliceBuilder {
private static PendingIntent getPrimaryAction(Context context) {
final Intent intent = getIntent(context);
return PendingIntent.getActivity(context, 0 /* requestCode */, intent, 0 /* flags */);
return PendingIntent.getActivity(context, 0 /* requestCode */, intent,
PendingIntent.FLAG_IMMUTABLE);
}
private static PendingIntent getBroadcastIntent(Context context) {
final Intent intent = new Intent(ACTION_ZEN_MODE_SLICE_CHANGED)
.setClass(context, SliceBroadcastReceiver.class);
return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
PendingIntent.FLAG_CANCEL_CURRENT);
PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE);
}
}

View File

@@ -95,7 +95,7 @@ public interface CustomSliceable extends Sliceable {
.setData(getUri())
.setClass(context, SliceBroadcastReceiver.class);
return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
}
@Override

View File

@@ -159,7 +159,7 @@ public class SliceBuilderUtils {
.setClass(context, SliceBroadcastReceiver.class)
.putExtra(EXTRA_SLICE_KEY, data.getKey());
return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
}
/**
@@ -167,7 +167,8 @@ public class SliceBuilderUtils {
*/
public static PendingIntent getContentPendingIntent(Context context, SliceData sliceData) {
final Intent intent = getContentIntent(context, sliceData);
return PendingIntent.getActivity(context, 0 /* requestCode */, intent, 0 /* flags */);
return PendingIntent.getActivity(context, 0 /* requestCode */, intent,
PendingIntent.FLAG_IMMUTABLE);
}
/**