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:
@@ -247,7 +247,8 @@ public class AddAccountSettings extends Activity {
|
|||||||
identityIntent.setAction(SHOULD_NOT_RESOLVE);
|
identityIntent.setAction(SHOULD_NOT_RESOLVE);
|
||||||
identityIntent.addCategory(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.putParcelable(KEY_CALLER_IDENTITY, mPendingIntent);
|
||||||
addAccountOptions.putBoolean(EXTRA_HAS_MULTIPLE_USERS, Utils.hasMultipleUsers(this));
|
addAccountOptions.putBoolean(EXTRA_HAS_MULTIPLE_USERS, Utils.hasMultipleUsers(this));
|
||||||
AccountManager.get(this).addAccountAsUser(
|
AccountManager.get(this).addAccountAsUser(
|
||||||
|
@@ -129,13 +129,13 @@ public class BluetoothSliceBuilder {
|
|||||||
private static PendingIntent getPrimaryAction(Context context) {
|
private static PendingIntent getPrimaryAction(Context context) {
|
||||||
final Intent intent = getIntent(context);
|
final Intent intent = getIntent(context);
|
||||||
return PendingIntent.getActivity(context, 0 /* requestCode */,
|
return PendingIntent.getActivity(context, 0 /* requestCode */,
|
||||||
intent, 0 /* flags */);
|
intent, PendingIntent.FLAG_IMMUTABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static PendingIntent getBroadcastIntent(Context context) {
|
private static PendingIntent getBroadcastIntent(Context context) {
|
||||||
final Intent intent = new Intent(ACTION_BLUETOOTH_SLICE_CHANGED)
|
final Intent intent = new Intent(ACTION_BLUETOOTH_SLICE_CHANGED)
|
||||||
.setClass(context, SliceBroadcastReceiver.class);
|
.setClass(context, SliceBroadcastReceiver.class);
|
||||||
return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
|
return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
|
||||||
PendingIntent.FLAG_UPDATE_CURRENT);
|
PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -163,7 +163,8 @@ public class BatteryFixSlice implements CustomSliceable {
|
|||||||
|
|
||||||
private PendingIntent getPrimaryAction() {
|
private PendingIntent getPrimaryAction() {
|
||||||
final Intent intent = getIntent();
|
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) {
|
private Slice buildBatteryGoodSlice(ListBuilder sliceBuilder, boolean isError) {
|
||||||
|
@@ -116,8 +116,8 @@ public class LowStorageSlice implements CustomSliceable {
|
|||||||
|
|
||||||
private RowBuilder buildRowBuilder(CharSequence title, String summary, IconCompat icon) {
|
private RowBuilder buildRowBuilder(CharSequence title, String summary, IconCompat icon) {
|
||||||
final SliceAction primarySliceAction = SliceAction.createDeeplink(
|
final SliceAction primarySliceAction = SliceAction.createDeeplink(
|
||||||
PendingIntent.getActivity(mContext, 0, getIntent(), 0), icon,
|
PendingIntent.getActivity(mContext, 0, getIntent(), PendingIntent.FLAG_IMMUTABLE),
|
||||||
ListBuilder.ICON_IMAGE, title);
|
icon, ListBuilder.ICON_IMAGE, title);
|
||||||
|
|
||||||
return new RowBuilder()
|
return new RowBuilder()
|
||||||
.setTitleItem(icon, ListBuilder.ICON_IMAGE)
|
.setTitleItem(icon, ListBuilder.ICON_IMAGE)
|
||||||
|
@@ -96,6 +96,6 @@ public class LocationSlice implements CustomSliceable {
|
|||||||
private PendingIntent getPrimaryAction() {
|
private PendingIntent getPrimaryAction() {
|
||||||
final Intent intent = getIntent();
|
final Intent intent = getIntent();
|
||||||
return PendingIntent.getActivity(mContext, 0 /* requestCode */,
|
return PendingIntent.getActivity(mContext, 0 /* requestCode */,
|
||||||
intent, 0 /* flags */);
|
intent, PendingIntent.FLAG_IMMUTABLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -142,13 +142,14 @@ public class ZenModeSliceBuilder {
|
|||||||
|
|
||||||
private static PendingIntent getPrimaryAction(Context context) {
|
private static PendingIntent getPrimaryAction(Context context) {
|
||||||
final Intent intent = getIntent(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) {
|
private static PendingIntent getBroadcastIntent(Context context) {
|
||||||
final Intent intent = new Intent(ACTION_ZEN_MODE_SLICE_CHANGED)
|
final Intent intent = new Intent(ACTION_ZEN_MODE_SLICE_CHANGED)
|
||||||
.setClass(context, SliceBroadcastReceiver.class);
|
.setClass(context, SliceBroadcastReceiver.class);
|
||||||
return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
|
return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
|
||||||
PendingIntent.FLAG_CANCEL_CURRENT);
|
PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -95,7 +95,7 @@ public interface CustomSliceable extends Sliceable {
|
|||||||
.setData(getUri())
|
.setData(getUri())
|
||||||
.setClass(context, SliceBroadcastReceiver.class);
|
.setClass(context, SliceBroadcastReceiver.class);
|
||||||
return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
|
return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
|
||||||
PendingIntent.FLAG_UPDATE_CURRENT);
|
PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -159,7 +159,7 @@ public class SliceBuilderUtils {
|
|||||||
.setClass(context, SliceBroadcastReceiver.class)
|
.setClass(context, SliceBroadcastReceiver.class)
|
||||||
.putExtra(EXTRA_SLICE_KEY, data.getKey());
|
.putExtra(EXTRA_SLICE_KEY, data.getKey());
|
||||||
return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
|
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) {
|
public static PendingIntent getContentPendingIntent(Context context, SliceData sliceData) {
|
||||||
final Intent intent = getContentIntent(context, 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user