diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java index 52b38a20e4a1b..4975fc222ef35 100644 --- a/core/java/android/app/AppOpsManager.java +++ b/core/java/android/app/AppOpsManager.java @@ -6854,7 +6854,7 @@ public class AppOpsManager { writeLongSparseLongArrayToParcel(mAccessCount, parcel); writeLongSparseLongArrayToParcel(mRejectCount, parcel); writeLongSparseLongArrayToParcel(mAccessDuration, parcel); - writeDiscreteAccessArrayToParcel(mDiscreteAccesses, parcel); + writeDiscreteAccessArrayToParcel(mDiscreteAccesses, parcel, flags); } @Override @@ -9711,29 +9711,16 @@ public class AppOpsManager { } private static void writeDiscreteAccessArrayToParcel( - @Nullable List array, @NonNull Parcel parcel) { - if (array != null) { - final int size = array.size(); - parcel.writeInt(size); - for (int i = 0; i < size; i++) { - array.get(i).writeToParcel(parcel, 0); - } - } else { - parcel.writeInt(-1); - } + @Nullable List array, @NonNull Parcel parcel, int flags) { + ParceledListSlice listSlice = + array == null ? null : new ParceledListSlice<>(array); + parcel.writeParcelable(listSlice, flags); } private static @Nullable List readDiscreteAccessArrayFromParcel( @NonNull Parcel parcel) { - final int size = parcel.readInt(); - if (size < 0) { - return null; - } - final List array = new ArrayList<>(size); - for (int i = 0; i < size; i++) { - array.add(new AttributedOpEntry(parcel)); - } - return array; + final ParceledListSlice listSlice = parcel.readParcelable(null); + return listSlice == null ? null : listSlice.getList(); } /**