Bundle.java revision a47223f99b6b7ade4ae909c458d975eb487062b3
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.os; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 19c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedyimport android.annotation.Nullable; 20b87655b3e551c6a32f34084c8533800bbd1aff7dDianne Hackbornimport android.util.ArrayMap; 215ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkeyimport android.util.Size; 225ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkeyimport android.util.SizeF; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.SparseArray; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.Serializable; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.ArrayList; 27aeb16e2435f9975b9fa1fc4b747796647a21292eJeff Sharkeyimport java.util.List; 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 30d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * A mapping from String keys to various {@link Parcelable} values. 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 32d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * @see PersistableBundle 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 340a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautnerpublic final class Bundle extends BaseBundle implements Cloneable, Parcelable { 35d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey private static final int FLAG_HAS_FDS = 1 << 8; 36d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey private static final int FLAG_HAS_FDS_KNOWN = 1 << 9; 37d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey private static final int FLAG_ALLOW_FDS = 1 << 10; 38d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Bundle EMPTY; 40d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static { 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project EMPTY = new Bundle(); 43b87655b3e551c6a32f34084c8533800bbd1aff7dDianne Hackborn EMPTY.mMap = ArrayMap.EMPTY; 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Constructs a new, empty Bundle. 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Bundle() { 50719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super(); 517410fb4b394c46fcaa195ba1071750469f776c80Jeff Sharkey mFlags = FLAG_HAS_FDS_KNOWN | FLAG_ALLOW_FDS; 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Constructs a Bundle whose data is stored as a Parcel. The data 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * will be unparcelled on first contact, using the assigned ClassLoader. 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param parcelledData a Parcel containing a Bundle 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Bundle(Parcel parcelledData) { 61719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super(parcelledData); 627410fb4b394c46fcaa195ba1071750469f776c80Jeff Sharkey mFlags = FLAG_HAS_FDS_KNOWN | FLAG_ALLOW_FDS; 63d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey if (mParcelledData.hasFileDescriptors()) { 64d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags |= FLAG_HAS_FDS; 65d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 686aff905048ba3b03724f17e2aba9089872e14cd2Dianne Hackborn /* package */ Bundle(Parcel parcelledData, int length) { 69719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super(parcelledData, length); 707410fb4b394c46fcaa195ba1071750469f776c80Jeff Sharkey mFlags = FLAG_HAS_FDS_KNOWN | FLAG_ALLOW_FDS; 71d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey if (mParcelledData.hasFileDescriptors()) { 72d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags |= FLAG_HAS_FDS; 73d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } 746aff905048ba3b03724f17e2aba9089872e14cd2Dianne Hackborn } 756aff905048ba3b03724f17e2aba9089872e14cd2Dianne Hackborn 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Constructs a new, empty Bundle that uses a specific ClassLoader for 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * instantiating Parcelable and Serializable objects. 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param loader An explicit ClassLoader to use when instantiating objects 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * inside of the Bundle. 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Bundle(ClassLoader loader) { 84719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super(loader); 857410fb4b394c46fcaa195ba1071750469f776c80Jeff Sharkey mFlags = FLAG_HAS_FDS_KNOWN | FLAG_ALLOW_FDS; 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Constructs a new, empty Bundle sized to hold the given number of 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * elements. The Bundle will grow as needed. 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param capacity the initial capacity of the Bundle 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Bundle(int capacity) { 95719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super(capacity); 967410fb4b394c46fcaa195ba1071750469f776c80Jeff Sharkey mFlags = FLAG_HAS_FDS_KNOWN | FLAG_ALLOW_FDS; 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Constructs a Bundle containing a copy of the mappings from the given 1012510b37518fd2fa227a9399b9269dd9a04ceb8d9Dianne Hackborn * Bundle. Does only a shallow copy of the original Bundle -- see 1022510b37518fd2fa227a9399b9269dd9a04ceb8d9Dianne Hackborn * {@link #deepCopy()} if that is not what you want. 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param b a Bundle to be copied. 1052510b37518fd2fa227a9399b9269dd9a04ceb8d9Dianne Hackborn * 1062510b37518fd2fa227a9399b9269dd9a04ceb8d9Dianne Hackborn * @see #deepCopy() 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Bundle(Bundle b) { 109719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super(b); 110d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags = b.mFlags; 111719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 112719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 113719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 114719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Constructs a Bundle containing a copy of the mappings from the given 1152510b37518fd2fa227a9399b9269dd9a04ceb8d9Dianne Hackborn * PersistableBundle. Does only a shallow copy of the PersistableBundle -- see 1162510b37518fd2fa227a9399b9269dd9a04ceb8d9Dianne Hackborn * {@link PersistableBundle#deepCopy()} if you don't want that. 117719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1182510b37518fd2fa227a9399b9269dd9a04ceb8d9Dianne Hackborn * @param b a PersistableBundle to be copied. 119719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 120719e6b167041ffaffc2245f692714c8de191863fCraig Mautner public Bundle(PersistableBundle b) { 121719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super(b); 1227410fb4b394c46fcaa195ba1071750469f776c80Jeff Sharkey mFlags = FLAG_HAS_FDS_KNOWN | FLAG_ALLOW_FDS; 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 126ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn * Constructs a Bundle without initializing it. 127ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn */ 128ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn Bundle(boolean doInit) { 129ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn super(doInit); 130ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn } 131ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn 132ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn /** 1331877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick * Make a Bundle for a single key/value pair. 1341877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick * 1351877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick * @hide 1361877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick */ 1371877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick public static Bundle forPair(String key, String value) { 1381877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick Bundle b = new Bundle(1); 1391877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick b.putString(key, value); 1401877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick return b; 1411877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick } 1421877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick 1431877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick /** 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Changes the ClassLoader this Bundle uses when instantiating objects. 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param loader An explicit ClassLoader to use when instantiating objects 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * inside of the Bundle. 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 149719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setClassLoader(ClassLoader loader) { 151719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.setClassLoader(loader); 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1555164246d7e47b9c995ca1e1587f3056eb777f60bDianne Hackborn * Return the ClassLoader currently associated with this Bundle. 1565164246d7e47b9c995ca1e1587f3056eb777f60bDianne Hackborn */ 157719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1585164246d7e47b9c995ca1e1587f3056eb777f60bDianne Hackborn public ClassLoader getClassLoader() { 159719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getClassLoader(); 1605164246d7e47b9c995ca1e1587f3056eb777f60bDianne Hackborn } 1619ecebbfbf768fd63e9a6c9a09c86d81c7737ee2dDianne Hackborn 162d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey /** {@hide} */ 1639ecebbfbf768fd63e9a6c9a09c86d81c7737ee2dDianne Hackborn public boolean setAllowFds(boolean allowFds) { 164d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey final boolean orig = (mFlags & FLAG_ALLOW_FDS) != 0; 165d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey if (allowFds) { 166d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags |= FLAG_ALLOW_FDS; 167d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } else { 168d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags &= ~FLAG_ALLOW_FDS; 169d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } 1709ecebbfbf768fd63e9a6c9a09c86d81c7737ee2dDianne Hackborn return orig; 1719ecebbfbf768fd63e9a6c9a09c86d81c7737ee2dDianne Hackborn } 1729ecebbfbf768fd63e9a6c9a09c86d81c7737ee2dDianne Hackborn 1735164246d7e47b9c995ca1e1587f3056eb777f60bDianne Hackborn /** 174d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * Mark if this Bundle is okay to "defuse." That is, it's okay for system 175d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * processes to ignore any {@link BadParcelableException} encountered when 176d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * unparceling it, leaving an empty bundle in its place. 177d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * <p> 178d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * This should <em>only</em> be set when the Bundle reaches its final 179d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * destination, otherwise a system process may clobber contents that were 180d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * destined for an app that could have unparceled them. 181d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * 182d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * @hide 183d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey */ 184d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey public void setDefusable(boolean defusable) { 185d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey if (defusable) { 186d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags |= FLAG_DEFUSABLE; 187d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } else { 188d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags &= ~FLAG_DEFUSABLE; 189d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } 190d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } 191d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey 192a04c7a7c6442b8c6f87f5dd11fc5659cdb92deccJeff Sharkey /** {@hide} */ 193a04c7a7c6442b8c6f87f5dd11fc5659cdb92deccJeff Sharkey public static Bundle setDefusable(Bundle bundle, boolean defusable) { 194a04c7a7c6442b8c6f87f5dd11fc5659cdb92deccJeff Sharkey if (bundle != null) { 195a04c7a7c6442b8c6f87f5dd11fc5659cdb92deccJeff Sharkey bundle.setDefusable(defusable); 196a04c7a7c6442b8c6f87f5dd11fc5659cdb92deccJeff Sharkey } 197a04c7a7c6442b8c6f87f5dd11fc5659cdb92deccJeff Sharkey return bundle; 198a04c7a7c6442b8c6f87f5dd11fc5659cdb92deccJeff Sharkey } 199a04c7a7c6442b8c6f87f5dd11fc5659cdb92deccJeff Sharkey 200d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey /** 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Clones the current Bundle. The internal map is cloned, but the keys and 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * values to which it refers are copied by reference. 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Object clone() { 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new Bundle(this); 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 210ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn * Make a deep copy of the given bundle. Traverses into inner containers and copies 211ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn * them as well, so they are not shared across bundles. Will traverse in to 212ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn * {@link Bundle}, {@link PersistableBundle}, {@link ArrayList}, and all types of 213ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn * primitive arrays. Other types of objects (such as Parcelable or Serializable) 214ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn * are referenced as-is and not copied in any way. 215ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn */ 2162510b37518fd2fa227a9399b9269dd9a04ceb8d9Dianne Hackborn public Bundle deepCopy() { 217ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn Bundle b = new Bundle(false); 218ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn b.copyInternal(this, true); 219ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn return b; 220ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn } 221ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn 222ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn /** 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Removes all elements from the mapping of this Bundle. 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 225719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void clear() { 227719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.clear(); 2287410fb4b394c46fcaa195ba1071750469f776c80Jeff Sharkey mFlags = FLAG_HAS_FDS_KNOWN | FLAG_ALLOW_FDS; 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 232250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate * Removes any entry with the given key from the mapping of this Bundle. 233250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate * 234250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate * @param key a String key 235250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate */ 236250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate public void remove(String key) { 237250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate super.remove(key); 238250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate if ((mFlags & FLAG_HAS_FDS) != 0) { 239250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate mFlags &= ~FLAG_HAS_FDS_KNOWN; 240250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate } 241250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate } 242250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate 243250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate /** 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts all mappings from the given Bundle into this Bundle. 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 246719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param bundle a Bundle 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 248719e6b167041ffaffc2245f692714c8de191863fCraig Mautner public void putAll(Bundle bundle) { 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 250719e6b167041ffaffc2245f692714c8de191863fCraig Mautner bundle.unparcel(); 251719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.putAll(bundle.mMap); 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 253d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey // FD state is now known if and only if both bundles already knew 254d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey if ((bundle.mFlags & FLAG_HAS_FDS) != 0) { 255d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags |= FLAG_HAS_FDS; 256d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } 257d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey if ((bundle.mFlags & FLAG_HAS_FDS_KNOWN) == 0) { 258d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags &= ~FLAG_HAS_FDS_KNOWN; 259d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } 260719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 261719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 262719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Reports whether the bundle contains any parcelled file descriptors. 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean hasFileDescriptors() { 266d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey if ((mFlags & FLAG_HAS_FDS_KNOWN) == 0) { 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean fdFound = false; // keep going until we find one or run out of data 268719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mParcelledData != null) { 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mParcelledData.hasFileDescriptors()) { 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fdFound = true; 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // It's been unparcelled, so we need to walk the map 275b87655b3e551c6a32f34084c8533800bbd1aff7dDianne Hackborn for (int i=mMap.size()-1; i>=0; i--) { 276b87655b3e551c6a32f34084c8533800bbd1aff7dDianne Hackborn Object obj = mMap.valueAt(i); 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (obj instanceof Parcelable) { 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((((Parcelable)obj).describeContents() 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project & Parcelable.CONTENTS_FILE_DESCRIPTOR) != 0) { 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fdFound = true; 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (obj instanceof Parcelable[]) { 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcelable[] array = (Parcelable[]) obj; 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int n = array.length - 1; n >= 0; n--) { 286e58c7858a39d58a222fe8302dc5ffbe4a25c5bf1Taiju Tsuiki Parcelable p = array[n]; 287e58c7858a39d58a222fe8302dc5ffbe4a25c5bf1Taiju Tsuiki if (p != null && ((p.describeContents() 288e58c7858a39d58a222fe8302dc5ffbe4a25c5bf1Taiju Tsuiki & Parcelable.CONTENTS_FILE_DESCRIPTOR) != 0)) { 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fdFound = true; 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (obj instanceof SparseArray) { 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SparseArray<? extends Parcelable> array = 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project (SparseArray<? extends Parcelable>) obj; 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int n = array.size() - 1; n >= 0; n--) { 297ecd21848731f55978cdac739e6d4460a83449202Taiju Tsuiki Parcelable p = array.valueAt(n); 298ecd21848731f55978cdac739e6d4460a83449202Taiju Tsuiki if (p != null && (p.describeContents() 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project & Parcelable.CONTENTS_FILE_DESCRIPTOR) != 0) { 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fdFound = true; 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (obj instanceof ArrayList) { 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ArrayList array = (ArrayList) obj; 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // an ArrayList here might contain either Strings or 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Parcelables; only look inside for Parcelables 308719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (!array.isEmpty() && (array.get(0) instanceof Parcelable)) { 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int n = array.size() - 1; n >= 0; n--) { 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcelable p = (Parcelable) array.get(n); 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (p != null && ((p.describeContents() 3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project & Parcelable.CONTENTS_FILE_DESCRIPTOR) != 0)) { 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fdFound = true; 3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 322d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey if (fdFound) { 323d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags |= FLAG_HAS_FDS; 324250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate } else { 325250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate mFlags &= ~FLAG_HAS_FDS; 326d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } 327d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags |= FLAG_HAS_FDS_KNOWN; 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 329d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey return (mFlags & FLAG_HAS_FDS) != 0; 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 331719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 333a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn * Filter values in Bundle to only basic types. 334a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn * @hide 335a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn */ 336851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn public Bundle filterValues() { 337a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn unparcel(); 338851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn Bundle bundle = this; 339a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn if (mMap != null) { 340851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn ArrayMap<String, Object> map = mMap; 341851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn for (int i = map.size() - 1; i >= 0; i--) { 342851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn Object value = map.valueAt(i); 343a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn if (PersistableBundle.isValidType(value)) { 344a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn continue; 345a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn } 346a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn if (value instanceof Bundle) { 347851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn Bundle newBundle = ((Bundle)value).filterValues(); 348851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn if (newBundle != value) { 349851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn if (map == mMap) { 350851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // The filter had to generate a new bundle, but we have not yet 351851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // created a new one here. Do that now. 352851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn bundle = new Bundle(this); 353851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // Note the ArrayMap<> constructor is guaranteed to generate 354851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // a new object with items in the same order as the original. 355851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn map = bundle.mMap; 356851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn } 357851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // Replace this current entry with the new child bundle. 358851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn map.setValueAt(i, newBundle); 359851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn } 360851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn continue; 361a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn } 362a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn if (value.getClass().getName().startsWith("android.")) { 363a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn continue; 364a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn } 365851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn if (map == mMap) { 366851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // This is the first time we have had to remove something, that means we 367851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // need to switch to a new Bundle. 368851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn bundle = new Bundle(this); 369851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // Note the ArrayMap<> constructor is guaranteed to generate 370851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // a new object with items in the same order as the original. 371851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn map = bundle.mMap; 372851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn } 373851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn map.removeAt(i); 374a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn } 375a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn } 376250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate mFlags |= FLAG_HAS_FDS_KNOWN; 377250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate mFlags &= ~FLAG_HAS_FDS; 378851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn return bundle; 379a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn } 380a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn 381a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn /** 3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a byte value into the mapping of this Bundle, replacing 3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. 3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a byte 3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 388719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 389c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putByte(@Nullable String key, byte value) { 390719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putByte(key, value); 3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a char value into the mapping of this Bundle, replacing 3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. 3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 398c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy * @param value a char 3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 400719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 401c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putChar(@Nullable String key, char value) { 402719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putChar(key, value); 4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a short value into the mapping of this Bundle, replacing 4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. 4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a short 4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 412719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 413c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putShort(@Nullable String key, short value) { 414719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putShort(key, value); 4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a float value into the mapping of this Bundle, replacing 4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a float 4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 424719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 425c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putFloat(@Nullable String key, float value) { 426719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putFloat(key, value); 4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a CharSequence value into the mapping of this Bundle, replacing 4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a CharSequence, or null 4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 436719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 437c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putCharSequence(@Nullable String key, @Nullable CharSequence value) { 438719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putCharSequence(key, value); 4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a Parcelable value into the mapping of this Bundle, replacing 4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a Parcelable object, or null 4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 448c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putParcelable(@Nullable String key, @Nullable Parcelable value) { 4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 4509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMap.put(key, value); 451d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags &= ~FLAG_HAS_FDS_KNOWN; 4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4555ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * Inserts a Size value into the mapping of this Bundle, replacing 4565ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * any existing value for the given key. Either key or value may be null. 4575ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * 4585ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * @param key a String, or null 4595ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * @param value a Size object, or null 4605ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey */ 461c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putSize(@Nullable String key, @Nullable Size value) { 4625ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey unparcel(); 4635ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey mMap.put(key, value); 4645ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey } 4655ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey 4665ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey /** 4675ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * Inserts a SizeF value into the mapping of this Bundle, replacing 4685ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * any existing value for the given key. Either key or value may be null. 4695ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * 4705ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * @param key a String, or null 4715ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * @param value a SizeF object, or null 4725ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey */ 473c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putSizeF(@Nullable String key, @Nullable SizeF value) { 4745ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey unparcel(); 4755ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey mMap.put(key, value); 4765ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey } 4775ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey 4785ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey /** 4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts an array of Parcelable values into the mapping of this Bundle, 4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * replacing any existing value for the given key. Either key or value may 4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * be null. 4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value an array of Parcelable objects, or null 4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 486c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putParcelableArray(@Nullable String key, @Nullable Parcelable[] value) { 4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMap.put(key, value); 489d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags &= ~FLAG_HAS_FDS_KNOWN; 4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a List of Parcelable values into the mapping of this Bundle, 4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * replacing any existing value for the given key. Either key or value may 4959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * be null. 4969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value an ArrayList of Parcelable objects, or null 4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 500c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putParcelableArrayList(@Nullable String key, 501c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable ArrayList<? extends Parcelable> value) { 5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMap.put(key, value); 504d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags &= ~FLAG_HAS_FDS_KNOWN; 5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 507aeb16e2435f9975b9fa1fc4b747796647a21292eJeff Sharkey /** {@hide} */ 508aeb16e2435f9975b9fa1fc4b747796647a21292eJeff Sharkey public void putParcelableList(String key, List<? extends Parcelable> value) { 509aeb16e2435f9975b9fa1fc4b747796647a21292eJeff Sharkey unparcel(); 510aeb16e2435f9975b9fa1fc4b747796647a21292eJeff Sharkey mMap.put(key, value); 511d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags &= ~FLAG_HAS_FDS_KNOWN; 512aeb16e2435f9975b9fa1fc4b747796647a21292eJeff Sharkey } 513aeb16e2435f9975b9fa1fc4b747796647a21292eJeff Sharkey 5149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a SparceArray of Parcelable values into the mapping of this 5169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Bundle, replacing any existing value for the given key. Either key 5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or value may be null. 5189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 5209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a SparseArray of Parcelable objects, or null 5219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 522c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putSparseParcelableArray(@Nullable String key, 523c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable SparseArray<? extends Parcelable> value) { 5249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 5259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMap.put(key, value); 526d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags &= ~FLAG_HAS_FDS_KNOWN; 5279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts an ArrayList<Integer> value into the mapping of this Bundle, replacing 5319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 5329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 5349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value an ArrayList<Integer> object, or null 5359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 536719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 537c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putIntegerArrayList(@Nullable String key, @Nullable ArrayList<Integer> value) { 538719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putIntegerArrayList(key, value); 5399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts an ArrayList<String> value into the mapping of this Bundle, replacing 5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value an ArrayList<String> object, or null 5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 548719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 549c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putStringArrayList(@Nullable String key, @Nullable ArrayList<String> value) { 550719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putStringArrayList(key, value); 5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 55408bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * Inserts an ArrayList<CharSequence> value into the mapping of this Bundle, replacing 55508bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * any existing value for the given key. Either key or value may be null. 55608bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * 55708bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * @param key a String, or null 55808bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * @param value an ArrayList<CharSequence> object, or null 55908bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert */ 560719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 561c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putCharSequenceArrayList(@Nullable String key, 562c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable ArrayList<CharSequence> value) { 563719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putCharSequenceArrayList(key, value); 56408bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert } 56508bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert 56608bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert /** 5679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a Serializable value into the mapping of this Bundle, replacing 5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 5699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a Serializable object, or null 5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 573719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 574c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putSerializable(@Nullable String key, @Nullable Serializable value) { 575719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putSerializable(key, value); 5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a byte array value into the mapping of this Bundle, replacing 5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a byte array object, or null 5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 585719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 586c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putByteArray(@Nullable String key, @Nullable byte[] value) { 587719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putByteArray(key, value); 5889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a short array value into the mapping of this Bundle, replacing 5929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 5939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 5959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a short array object, or null 5969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 597719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 598c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putShortArray(@Nullable String key, @Nullable short[] value) { 599719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putShortArray(key, value); 6009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a char array value into the mapping of this Bundle, replacing 6049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 6059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 6079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a char array object, or null 6089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 609719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 610c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putCharArray(@Nullable String key, @Nullable char[] value) { 611719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putCharArray(key, value); 6129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a float array value into the mapping of this Bundle, replacing 6169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 6179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 6199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a float array object, or null 6209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 621719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 622c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putFloatArray(@Nullable String key, @Nullable float[] value) { 623719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putFloatArray(key, value); 6249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 62708bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * Inserts a CharSequence array value into the mapping of this Bundle, replacing 62808bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * any existing value for the given key. Either key or value may be null. 62908bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * 63008bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * @param key a String, or null 63108bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * @param value a CharSequence array object, or null 63208bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert */ 633719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 634c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putCharSequenceArray(@Nullable String key, @Nullable CharSequence[] value) { 635719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putCharSequenceArray(key, value); 63608bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert } 63708bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert 63808bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert /** 6399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a Bundle value into the mapping of this Bundle, replacing 6409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 6419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 6439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a Bundle object, or null 6449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 645c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putBundle(@Nullable String key, @Nullable Bundle value) { 6469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 6479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMap.put(key, value); 6489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6513cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * Inserts an {@link IBinder} value into the mapping of this Bundle, replacing 6523cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * any existing value for the given key. Either key or value may be null. 6533cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * 6543cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * <p class="note">You should be very careful when using this function. In many 6553cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * places where Bundles are used (such as inside of Intent objects), the Bundle 6563cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * can live longer inside of another process than the process that had originally 6573cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * created it. In that case, the IBinder you supply here will become invalid 6583cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * when your process goes away, and no longer usable, even if a new process is 6593cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * created for you later on.</p> 6603cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * 6613cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * @param key a String, or null 6623cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * @param value an IBinder object, or null 6633cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn */ 664c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putBinder(@Nullable String key, @Nullable IBinder value) { 6653cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn unparcel(); 6663cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn mMap.put(key, value); 6673cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn } 6683cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn 6693cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn /** 6709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts an IBinder value into the mapping of this Bundle, replacing 6719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 6729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 6749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value an IBinder object, or null 6759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated 6773cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * @hide This is the old name of the function. 6789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 680c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putIBinder(@Nullable String key, @Nullable IBinder value) { 6819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 6829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMap.put(key, value); 6839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or (byte) 0 if 6879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key. 6889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String 6909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a byte value 6919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 692719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 6939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public byte getByte(String key) { 694719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getByte(key); 6959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or defaultValue if 6999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key. 7009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String 7029f6cb87522d395eacd87dff1da525f4dc9809d27Nicolas Klein * @param defaultValue Value to return if key does not exist 7039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a byte value 7049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 705719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 7069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Byte getByte(String key, byte defaultValue) { 707719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getByte(key, defaultValue); 7089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7119f6cb87522d395eacd87dff1da525f4dc9809d27Nicolas Klein * Returns the value associated with the given key, or (char) 0 if 7129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key. 7139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String 7159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a char value 7169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 717719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 7189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public char getChar(String key) { 719719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getChar(key); 7209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7239f6cb87522d395eacd87dff1da525f4dc9809d27Nicolas Klein * Returns the value associated with the given key, or defaultValue if 7249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key. 7259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String 7279f6cb87522d395eacd87dff1da525f4dc9809d27Nicolas Klein * @param defaultValue Value to return if key does not exist 7289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a char value 7299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 730719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 7319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public char getChar(String key, char defaultValue) { 732719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getChar(key, defaultValue); 7339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or (short) 0 if 7379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key. 7389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String 7409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a short value 7419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 742719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 7439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public short getShort(String key) { 744719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getShort(key); 7459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or defaultValue if 7499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key. 7509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String 7529f6cb87522d395eacd87dff1da525f4dc9809d27Nicolas Klein * @param defaultValue Value to return if key does not exist 7539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a short value 7549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 755719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 7569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public short getShort(String key, short defaultValue) { 757719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getShort(key, defaultValue); 7589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or 0.0f if 7629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key. 7639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String 7659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a float value 7669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 767719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 7689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public float getFloat(String key) { 769719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getFloat(key); 7709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or defaultValue if 7749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key. 7759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String 7779f6cb87522d395eacd87dff1da525f4dc9809d27Nicolas Klein * @param defaultValue Value to return if key does not exist 7789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a float value 7799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 780719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 7819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public float getFloat(String key, float defaultValue) { 782719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getFloat(key, defaultValue); 7839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 7879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 7889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 7899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 7919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a CharSequence value, or null 7929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 793719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 794c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 795c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public CharSequence getCharSequence(@Nullable String key) { 796719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getCharSequence(key); 7979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 800e3a7f628c6d9fef42be24999b3137ebe5c6f3525Dianne Hackborn * Returns the value associated with the given key, or defaultValue if 801ca2197b0457b1626b95a053d835ceaca43ac0286Narayan Kamath * no mapping of the desired type exists for the given key or if a null 802ca2197b0457b1626b95a053d835ceaca43ac0286Narayan Kamath * value is explicitly associatd with the given key. 803e3a7f628c6d9fef42be24999b3137ebe5c6f3525Dianne Hackborn * 804e3a7f628c6d9fef42be24999b3137ebe5c6f3525Dianne Hackborn * @param key a String, or null 805ca2197b0457b1626b95a053d835ceaca43ac0286Narayan Kamath * @param defaultValue Value to return if key does not exist or if a null 806ca2197b0457b1626b95a053d835ceaca43ac0286Narayan Kamath * value is associated with the given key. 807116751d84f6d276f2cac7074abd9f8ba23742958Christopher Tate * @return the CharSequence value associated with the given key, or defaultValue 808116751d84f6d276f2cac7074abd9f8ba23742958Christopher Tate * if no valid CharSequence object is currently mapped to that key. 809e3a7f628c6d9fef42be24999b3137ebe5c6f3525Dianne Hackborn */ 810719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 811c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public CharSequence getCharSequence(@Nullable String key, CharSequence defaultValue) { 812719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getCharSequence(key, defaultValue); 813e3a7f628c6d9fef42be24999b3137ebe5c6f3525Dianne Hackborn } 814e3a7f628c6d9fef42be24999b3137ebe5c6f3525Dianne Hackborn 815e3a7f628c6d9fef42be24999b3137ebe5c6f3525Dianne Hackborn /** 8169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 8179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 8189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 8199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 8215ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * @return a Size value, or null 8225ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey */ 823c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 824c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public Size getSize(@Nullable String key) { 8255ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey unparcel(); 8265ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey final Object o = mMap.get(key); 8275ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey try { 8285ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey return (Size) o; 8295ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey } catch (ClassCastException e) { 8305ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey typeWarning(key, o, "Size", e); 8315ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey return null; 8325ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey } 8335ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey } 8345ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey 8355ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey /** 8365ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * Returns the value associated with the given key, or null if 8375ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * no mapping of the desired type exists for the given key or a null 8385ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * value is explicitly associated with the key. 8395ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * 8405ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * @param key a String, or null 8415ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * @return a Size value, or null 8425ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey */ 843c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 844c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public SizeF getSizeF(@Nullable String key) { 8455ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey unparcel(); 8465ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey final Object o = mMap.get(key); 8475ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey try { 8485ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey return (SizeF) o; 8495ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey } catch (ClassCastException e) { 8505ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey typeWarning(key, o, "SizeF", e); 8515ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey return null; 8525ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey } 8535ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey } 8545ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey 8555ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey /** 8565ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * Returns the value associated with the given key, or null if 8575ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * no mapping of the desired type exists for the given key or a null 8585ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * value is explicitly associated with the key. 8595ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * 8605ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * @param key a String, or null 8619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a Bundle value, or null 8629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 863c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 864c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public Bundle getBundle(@Nullable String key) { 8659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 8669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object o = mMap.get(key); 8679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (o == null) { 8689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 8699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 8719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (Bundle) o; 8729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (ClassCastException e) { 8739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project typeWarning(key, o, "Bundle", e); 8749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 8759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 8809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 8819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 8829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 8849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a Parcelable value, or null 8859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 886c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 887c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public <T extends Parcelable> T getParcelable(@Nullable String key) { 8889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 8899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object o = mMap.get(key); 8909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (o == null) { 8919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 8929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 8949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (T) o; 8959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (ClassCastException e) { 8969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project typeWarning(key, o, "Parcelable", e); 8979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 8989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 9029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 9039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 9049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 9059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 9079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a Parcelable[] value, or null 9089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 909c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 910c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public Parcelable[] getParcelableArray(@Nullable String key) { 9119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 9129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object o = mMap.get(key); 9139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (o == null) { 9149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 9159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 9179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (Parcelable[]) o; 9189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (ClassCastException e) { 9199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project typeWarning(key, o, "Parcelable[]", e); 9209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 9219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 9259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 9269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 9279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 9289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 9309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return an ArrayList<T> value, or null 9319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 932c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 933c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public <T extends Parcelable> ArrayList<T> getParcelableArrayList(@Nullable String key) { 9349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 9359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object o = mMap.get(key); 9369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (o == null) { 9379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 9389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 9409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (ArrayList<T>) o; 9419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (ClassCastException e) { 9429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project typeWarning(key, o, "ArrayList", e); 9439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 9449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 9489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 9499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 9509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 9519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 9539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a SparseArray of T values, or null 9559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 956c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 957c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public <T extends Parcelable> SparseArray<T> getSparseParcelableArray(@Nullable String key) { 9589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 9599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object o = mMap.get(key); 9609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (o == null) { 9619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 9629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 9649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (SparseArray<T>) o; 9659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (ClassCastException e) { 9669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project typeWarning(key, o, "SparseArray", e); 9679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 9689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 9729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 9739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 9749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 9759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 9779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a Serializable value, or null 9789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 979719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 980c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 981c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public Serializable getSerializable(@Nullable String key) { 982719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getSerializable(key); 9839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 9869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 9879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 9889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 9899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 9919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return an ArrayList<String> value, or null 9929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 993719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 994c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 995c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public ArrayList<Integer> getIntegerArrayList(@Nullable String key) { 996719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getIntegerArrayList(key); 9979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 10019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 10029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 10039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 10049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 10059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return an ArrayList<String> value, or null 10069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1007719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1008c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1009c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public ArrayList<String> getStringArrayList(@Nullable String key) { 1010719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getStringArrayList(key); 10119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 10159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 10169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 10179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 10189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 101908bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * @return an ArrayList<CharSequence> value, or null 102008bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert */ 1021719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1022c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1023c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public ArrayList<CharSequence> getCharSequenceArrayList(@Nullable String key) { 1024719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getCharSequenceArrayList(key); 102508bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert } 102608bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert 102708bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert /** 102808bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * Returns the value associated with the given key, or null if 102908bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * no mapping of the desired type exists for the given key or a null 10309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 10319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 10329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 10339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a byte[] value, or null 10349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1035719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1036c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1037c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public byte[] getByteArray(@Nullable String key) { 1038719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getByteArray(key); 10399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 10439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 10449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 10459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 10469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 10479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a short[] value, or null 10489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1049719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1050c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1051c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public short[] getShortArray(@Nullable String key) { 1052719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getShortArray(key); 10539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 10579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 10589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 10599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 10609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 10619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a char[] value, or null 10629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1063719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1064c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1065c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public char[] getCharArray(@Nullable String key) { 1066719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getCharArray(key); 10679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 10719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 10729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 10739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 10749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 10759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a float[] value, or null 10769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1077719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1078c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1079c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public float[] getFloatArray(@Nullable String key) { 1080719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getFloatArray(key); 10819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 10859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 10869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 10879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 10889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 108908bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * @return a CharSequence[] value, or null 109008bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert */ 1091719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1092c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1093c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public CharSequence[] getCharSequenceArray(@Nullable String key) { 1094719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getCharSequenceArray(key); 109508bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert } 109608bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert 109708bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert /** 109808bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * Returns the value associated with the given key, or null if 109908bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * no mapping of the desired type exists for the given key or a null 110008bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * value is explicitly associated with the key. 110108bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * 110208bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * @param key a String, or null 11039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return an IBinder value, or null 11043cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn */ 1105c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1106c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public IBinder getBinder(@Nullable String key) { 11073cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn unparcel(); 11083cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn Object o = mMap.get(key); 11093cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn if (o == null) { 11103cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn return null; 11113cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn } 11123cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn try { 11133cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn return (IBinder) o; 11143cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn } catch (ClassCastException e) { 11153cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn typeWarning(key, o, "IBinder", e); 11163cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn return null; 11173cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn } 11183cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn } 11193cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn 11203cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn /** 11213cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * Returns the value associated with the given key, or null if 11223cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * no mapping of the desired type exists for the given key or a null 11233cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * value is explicitly associated with the key. 11243cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * 11253cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * @param key a String, or null 11263cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * @return an IBinder value, or null 11279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 11289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated 11293cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * @hide This is the old name of the function. 11309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 11319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 1132c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1133c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public IBinder getIBinder(@Nullable String key) { 11349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 11359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object o = mMap.get(key); 11369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (o == null) { 11379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 11389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 11409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (IBinder) o; 11419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (ClassCastException e) { 11429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project typeWarning(key, o, "IBinder", e); 11439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 11449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Parcelable.Creator<Bundle> CREATOR = 11489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new Parcelable.Creator<Bundle>() { 1149719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 11509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Bundle createFromParcel(Parcel in) { 11519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return in.readBundle(); 11529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1154719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 11559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Bundle[] newArray(int size) { 11569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new Bundle[size]; 11579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 11599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 11619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Report the nature of this Parcelable's contents 11629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1163719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 11649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 11659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int mask = 0; 11669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (hasFileDescriptors()) { 11679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mask |= Parcelable.CONTENTS_FILE_DESCRIPTOR; 11689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mask; 11709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1171719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 11729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 11739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Writes the Bundle contents to a Parcel, typically in order for 11749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * it to be passed through an IBinder connection. 11759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param parcel The parcel to copy this bundle to. 11769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1177719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 11789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel parcel, int flags) { 1179d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey final boolean oldAllowFds = parcel.pushAllowFds((mFlags & FLAG_ALLOW_FDS) != 0); 11809ecebbfbf768fd63e9a6c9a09c86d81c7737ee2dDianne Hackborn try { 1181719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.writeToParcelInner(parcel, flags); 11829ecebbfbf768fd63e9a6c9a09c86d81c7737ee2dDianne Hackborn } finally { 1183c04db7e06737c5b9bae276ac462858d44002672eDianne Hackborn parcel.restoreAllowFds(oldAllowFds); 11846aff905048ba3b03724f17e2aba9089872e14cd2Dianne Hackborn } 11859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 11889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Reads the Parcel contents into this Bundle, typically in order for 11899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * it to be passed through an IBinder connection. 11909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param parcel The parcel to overwrite this bundle from. 11919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 11929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void readFromParcel(Parcel parcel) { 1193719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.readFromParcelInner(parcel); 11947410fb4b394c46fcaa195ba1071750469f776c80Jeff Sharkey mFlags = FLAG_HAS_FDS_KNOWN | FLAG_ALLOW_FDS; 1195d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey if (mParcelledData.hasFileDescriptors()) { 1196d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags |= FLAG_HAS_FDS; 1197d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } 11989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 12019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public synchronized String toString() { 12029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mParcelledData != null) { 120352764cba5968888180ceedf717d85e08ffd747ccAndreas Gampe if (isEmptyParcel()) { 12048aee64d18b6b90e46e886a80d8de0467d682ddc4Dianne Hackborn return "Bundle[EMPTY_PARCEL]"; 12058aee64d18b6b90e46e886a80d8de0467d682ddc4Dianne Hackborn } else { 12068aee64d18b6b90e46e886a80d8de0467d682ddc4Dianne Hackborn return "Bundle[mParcelledData.dataSize=" + 12078aee64d18b6b90e46e886a80d8de0467d682ddc4Dianne Hackborn mParcelledData.dataSize() + "]"; 12088aee64d18b6b90e46e886a80d8de0467d682ddc4Dianne Hackborn } 12099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "Bundle[" + mMap.toString() + "]"; 12119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1212a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn 1213a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn /** 1214a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn * @hide 1215a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn */ 1216a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn public synchronized String toShortString() { 1217a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn if (mParcelledData != null) { 1218a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn if (isEmptyParcel()) { 1219a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn return "EMPTY_PARCEL"; 1220a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn } else { 1221a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn return "mParcelledData.dataSize=" + mParcelledData.dataSize(); 1222a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn } 1223a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn } 1224a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn return mMap.toString(); 1225a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn } 12269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1227