Add the explicitly mutable flag for creating a PendingIntent

- Android S+ to specify explicitly either FLAG_MUTABLE or FLAG_IMMUTABLE
  when creating a PendingIntent.
- Suggest to use the FLAG_IMMUTABLE as default. Change it to
  FLAG_MUTABLE while errors occur.

Fixes: 172207262
Fixes: 172207195
Fixes: 172205385
Fixes: 172204525
Fixes: 172205897
Test: build pass, manual test to paring blutooth device and doing
seamless transfer

Change-Id: Ic37b37bdbe6de6bdbad741985d3a920334240d80
This commit is contained in:
Hugh Chen
2020-11-03 12:08:45 +08:00
parent 5f5d754af2
commit 40d4e47b05
5 changed files with 21 additions and 12 deletions

View File

@@ -165,7 +165,8 @@ public class RemoteMediaSlice implements CustomSliceable {
.setData(getUri())
.putExtra(MEDIA_ID, id)
.setClass(mContext, SliceBroadcastReceiver.class);
return PendingIntent.getBroadcast(mContext, requestCode, intent, 0);
return PendingIntent.getBroadcast(mContext, requestCode, intent,
PendingIntent.FLAG_MUTABLE);
}
private SliceAction getSoundSettingAction(CharSequence actionTitle, IconCompat icon,
@@ -177,7 +178,8 @@ public class RemoteMediaSlice implements CustomSliceable {
mContext.getText(R.string.sound_settings).toString(), 0);
intent.setClassName(mContext.getPackageName(), SubSettings.class.getName());
intent.setData(contentUri);
final PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, intent, 0);
final PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, intent,
PendingIntent.FLAG_IMMUTABLE);
final SliceAction primarySliceAction = SliceAction.createDeeplink(pendingIntent, icon,
ListBuilder.ICON_IMAGE, actionTitle);
return primarySliceAction;
@@ -192,7 +194,8 @@ public class RemoteMediaSlice implements CustomSliceable {
.putExtra(SESSION_INFO, info)
.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
final PendingIntent primaryBroadcastIntent = PendingIntent.getBroadcast(mContext,
info.hashCode(), intent, PendingIntent.FLAG_UPDATE_CURRENT);
info.hashCode(), intent,
PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
final SliceAction primarySliceAction = SliceAction.createDeeplink(
primaryBroadcastIntent,
IconCompat.createWithResource(mContext, R.drawable.ic_volume_remote),