diff --git a/core/java/android/os/Bundle.java b/core/java/android/os/Bundle.java index 05dd48b12e55c..11280749f05b7 100644 --- a/core/java/android/os/Bundle.java +++ b/core/java/android/os/Bundle.java @@ -207,6 +207,18 @@ public final class Bundle extends BaseBundle implements Cloneable, Parcelable { mFlags = FLAG_HAS_FDS_KNOWN | FLAG_ALLOW_FDS; } + /** + * Removes any entry with the given key from the mapping of this Bundle. + * + * @param key a String key + */ + public void remove(String key) { + super.remove(key); + if ((mFlags & FLAG_HAS_FDS) != 0) { + mFlags &= ~FLAG_HAS_FDS_KNOWN; + } + } + /** * Inserts all mappings from the given Bundle into this Bundle. * @@ -288,6 +300,8 @@ public final class Bundle extends BaseBundle implements Cloneable, Parcelable { if (fdFound) { mFlags |= FLAG_HAS_FDS; + } else { + mFlags &= ~FLAG_HAS_FDS; } mFlags |= FLAG_HAS_FDS_KNOWN; } @@ -315,6 +329,8 @@ public final class Bundle extends BaseBundle implements Cloneable, Parcelable { mMap.removeAt(i); } } + mFlags |= FLAG_HAS_FDS_KNOWN; + mFlags &= ~FLAG_HAS_FDS; } /**