Add the mutability flag to BluetoothDevicesSlice.
Starting Android S, all PendingIntent has to have a explicit mutability flag set. Fixes: 172207505 Fixes: 172811893 Test: Enable BluetoothDevicesSlice and play on it. Play on the volume panel. Change-Id: I618455de683d619fe300309e31864b3c64f12ad1
This commit is contained in:
@@ -206,7 +206,7 @@ public class BluetoothDevicesSlice implements CustomSliceable {
|
|||||||
return PendingIntent
|
return PendingIntent
|
||||||
.getActivity(mContext, device.hashCode() /* requestCode */,
|
.getActivity(mContext, device.hashCode() /* requestCode */,
|
||||||
subSettingLauncher.toIntent(),
|
subSettingLauncher.toIntent(),
|
||||||
0 /* flags */);
|
PendingIntent.FLAG_IMMUTABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
@@ -236,7 +236,8 @@ public class BluetoothDevicesSlice implements CustomSliceable {
|
|||||||
.setClass(mContext, SliceBroadcastReceiver.class)
|
.setClass(mContext, SliceBroadcastReceiver.class)
|
||||||
.putExtra(EXTRA_ENABLE_BLUETOOTH, true);
|
.putExtra(EXTRA_ENABLE_BLUETOOTH, true);
|
||||||
final SliceAction action = SliceAction.create(PendingIntent.getBroadcast(mContext,
|
final SliceAction action = SliceAction.create(PendingIntent.getBroadcast(mContext,
|
||||||
0 /* requestCode */, intent, 0 /* flags */), icon, ListBuilder.ICON_IMAGE, title);
|
0 /* requestCode */, intent, PendingIntent.FLAG_IMMUTABLE), icon,
|
||||||
|
ListBuilder.ICON_IMAGE, title);
|
||||||
|
|
||||||
return new ListBuilder.RowBuilder()
|
return new ListBuilder.RowBuilder()
|
||||||
.setTitleItem(icon, ListBuilder.ICON_IMAGE)
|
.setTitleItem(icon, ListBuilder.ICON_IMAGE)
|
||||||
@@ -252,7 +253,7 @@ public class BluetoothDevicesSlice implements CustomSliceable {
|
|||||||
final IconCompat icon = Utils.createIconWithDrawable(drawable);
|
final IconCompat icon = Utils.createIconWithDrawable(drawable);
|
||||||
final CharSequence title = mContext.getText(R.string.bluetooth_devices);
|
final CharSequence title = mContext.getText(R.string.bluetooth_devices);
|
||||||
final PendingIntent primaryActionIntent = PendingIntent.getActivity(mContext,
|
final PendingIntent primaryActionIntent = PendingIntent.getActivity(mContext,
|
||||||
0 /* requestCode */, getIntent(), 0 /* flags */);
|
0 /* requestCode */, getIntent(), PendingIntent.FLAG_IMMUTABLE);
|
||||||
final SliceAction primarySliceAction = SliceAction.createDeeplink(primaryActionIntent, icon,
|
final SliceAction primarySliceAction = SliceAction.createDeeplink(primaryActionIntent, icon,
|
||||||
ListBuilder.ICON_IMAGE, title);
|
ListBuilder.ICON_IMAGE, title);
|
||||||
|
|
||||||
@@ -274,7 +275,7 @@ public class BluetoothDevicesSlice implements CustomSliceable {
|
|||||||
.setSourceMetricsCategory(SettingsEnums.BLUETOOTH_PAIRING)
|
.setSourceMetricsCategory(SettingsEnums.BLUETOOTH_PAIRING)
|
||||||
.toIntent();
|
.toIntent();
|
||||||
final PendingIntent pi = PendingIntent.getActivity(mContext, intent.hashCode(), intent,
|
final PendingIntent pi = PendingIntent.getActivity(mContext, intent.hashCode(), intent,
|
||||||
0 /* flags */);
|
PendingIntent.FLAG_IMMUTABLE);
|
||||||
return SliceAction.createDeeplink(pi, icon, ListBuilder.ICON_IMAGE, title);
|
return SliceAction.createDeeplink(pi, icon, ListBuilder.ICON_IMAGE, title);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -341,7 +342,8 @@ public class BluetoothDevicesSlice implements CustomSliceable {
|
|||||||
.putExtra(BLUETOOTH_DEVICE_HASH_CODE, bluetoothDevice.hashCode());
|
.putExtra(BLUETOOTH_DEVICE_HASH_CODE, bluetoothDevice.hashCode());
|
||||||
|
|
||||||
return SliceAction.create(
|
return SliceAction.create(
|
||||||
PendingIntent.getBroadcast(mContext, bluetoothDevice.hashCode(), intent, 0),
|
PendingIntent.getBroadcast(mContext, bluetoothDevice.hashCode(), intent,
|
||||||
|
PendingIntent.FLAG_IMMUTABLE),
|
||||||
getBluetoothDeviceIcon(bluetoothDevice),
|
getBluetoothDeviceIcon(bluetoothDevice),
|
||||||
ListBuilder.ICON_IMAGE,
|
ListBuilder.ICON_IMAGE,
|
||||||
bluetoothDevice.getName());
|
bluetoothDevice.getName());
|
||||||
|
@@ -97,7 +97,8 @@ public class BluetoothDevicesSliceTest {
|
|||||||
// Mock the icon and detail intent of Bluetooth.
|
// Mock the icon and detail intent of Bluetooth.
|
||||||
mIcon = IconCompat.createWithResource(mContext,
|
mIcon = IconCompat.createWithResource(mContext,
|
||||||
com.android.internal.R.drawable.ic_settings_bluetooth);
|
com.android.internal.R.drawable.ic_settings_bluetooth);
|
||||||
mDetailIntent = PendingIntent.getActivity(mContext, 0, new Intent("test action"), 0);
|
mDetailIntent = PendingIntent.getActivity(mContext, 0, new Intent("test action"),
|
||||||
|
PendingIntent.FLAG_IMMUTABLE);
|
||||||
doReturn(mIcon).when(mBluetoothDevicesSlice).getBluetoothDeviceIcon(any());
|
doReturn(mIcon).when(mBluetoothDevicesSlice).getBluetoothDeviceIcon(any());
|
||||||
doReturn(mDetailIntent).when(mBluetoothDevicesSlice).getBluetoothDetailIntent(any());
|
doReturn(mDetailIntent).when(mBluetoothDevicesSlice).getBluetoothDetailIntent(any());
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user