Bundle.java revision 851ec49de73913547a51476e9c80cccfd7c15572
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 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Bundle. 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param b a Bundle to be copied. 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Bundle(Bundle b) { 106719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super(b); 107d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags = b.mFlags; 108719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 109719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 110719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 111719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Constructs a Bundle containing a copy of the mappings from the given 112719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * PersistableBundle. 113719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 114719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param b a Bundle to be copied. 115719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 116719e6b167041ffaffc2245f692714c8de191863fCraig Mautner public Bundle(PersistableBundle b) { 117719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super(b); 1187410fb4b394c46fcaa195ba1071750469f776c80Jeff Sharkey mFlags = FLAG_HAS_FDS_KNOWN | FLAG_ALLOW_FDS; 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1221877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick * Make a Bundle for a single key/value pair. 1231877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick * 1241877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick * @hide 1251877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick */ 1261877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick public static Bundle forPair(String key, String value) { 1271877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick Bundle b = new Bundle(1); 1281877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick b.putString(key, value); 1291877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick return b; 1301877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick } 1311877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick 1321877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick /** 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Changes the ClassLoader this Bundle uses when instantiating objects. 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param loader An explicit ClassLoader to use when instantiating objects 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * inside of the Bundle. 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 138719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setClassLoader(ClassLoader loader) { 140719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.setClassLoader(loader); 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1445164246d7e47b9c995ca1e1587f3056eb777f60bDianne Hackborn * Return the ClassLoader currently associated with this Bundle. 1455164246d7e47b9c995ca1e1587f3056eb777f60bDianne Hackborn */ 146719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1475164246d7e47b9c995ca1e1587f3056eb777f60bDianne Hackborn public ClassLoader getClassLoader() { 148719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getClassLoader(); 1495164246d7e47b9c995ca1e1587f3056eb777f60bDianne Hackborn } 1509ecebbfbf768fd63e9a6c9a09c86d81c7737ee2dDianne Hackborn 151d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey /** {@hide} */ 1529ecebbfbf768fd63e9a6c9a09c86d81c7737ee2dDianne Hackborn public boolean setAllowFds(boolean allowFds) { 153d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey final boolean orig = (mFlags & FLAG_ALLOW_FDS) != 0; 154d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey if (allowFds) { 155d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags |= FLAG_ALLOW_FDS; 156d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } else { 157d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags &= ~FLAG_ALLOW_FDS; 158d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } 1599ecebbfbf768fd63e9a6c9a09c86d81c7737ee2dDianne Hackborn return orig; 1609ecebbfbf768fd63e9a6c9a09c86d81c7737ee2dDianne Hackborn } 1619ecebbfbf768fd63e9a6c9a09c86d81c7737ee2dDianne Hackborn 1625164246d7e47b9c995ca1e1587f3056eb777f60bDianne Hackborn /** 163d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * Mark if this Bundle is okay to "defuse." That is, it's okay for system 164d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * processes to ignore any {@link BadParcelableException} encountered when 165d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * unparceling it, leaving an empty bundle in its place. 166d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * <p> 167d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * This should <em>only</em> be set when the Bundle reaches its final 168d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * destination, otherwise a system process may clobber contents that were 169d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * destined for an app that could have unparceled them. 170d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * 171d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * @hide 172d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey */ 173d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey public void setDefusable(boolean defusable) { 174d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey if (defusable) { 175d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags |= FLAG_DEFUSABLE; 176d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } else { 177d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags &= ~FLAG_DEFUSABLE; 178d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } 179d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } 180d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey 181a04c7a7c6442b8c6f87f5dd11fc5659cdb92deccJeff Sharkey /** {@hide} */ 182a04c7a7c6442b8c6f87f5dd11fc5659cdb92deccJeff Sharkey public static Bundle setDefusable(Bundle bundle, boolean defusable) { 183a04c7a7c6442b8c6f87f5dd11fc5659cdb92deccJeff Sharkey if (bundle != null) { 184a04c7a7c6442b8c6f87f5dd11fc5659cdb92deccJeff Sharkey bundle.setDefusable(defusable); 185a04c7a7c6442b8c6f87f5dd11fc5659cdb92deccJeff Sharkey } 186a04c7a7c6442b8c6f87f5dd11fc5659cdb92deccJeff Sharkey return bundle; 187a04c7a7c6442b8c6f87f5dd11fc5659cdb92deccJeff Sharkey } 188a04c7a7c6442b8c6f87f5dd11fc5659cdb92deccJeff Sharkey 189d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey /** 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Clones the current Bundle. The internal map is cloned, but the keys and 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * values to which it refers are copied by reference. 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Object clone() { 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new Bundle(this); 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Removes all elements from the mapping of this Bundle. 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 201719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void clear() { 203719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.clear(); 2047410fb4b394c46fcaa195ba1071750469f776c80Jeff Sharkey mFlags = FLAG_HAS_FDS_KNOWN | FLAG_ALLOW_FDS; 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 208250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate * Removes any entry with the given key from the mapping of this Bundle. 209250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate * 210250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate * @param key a String key 211250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate */ 212250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate public void remove(String key) { 213250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate super.remove(key); 214250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate if ((mFlags & FLAG_HAS_FDS) != 0) { 215250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate mFlags &= ~FLAG_HAS_FDS_KNOWN; 216250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate } 217250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate } 218250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate 219250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate /** 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts all mappings from the given Bundle into this Bundle. 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 222719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param bundle a Bundle 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 224719e6b167041ffaffc2245f692714c8de191863fCraig Mautner public void putAll(Bundle bundle) { 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 226719e6b167041ffaffc2245f692714c8de191863fCraig Mautner bundle.unparcel(); 227719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.putAll(bundle.mMap); 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 229d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey // FD state is now known if and only if both bundles already knew 230d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey if ((bundle.mFlags & FLAG_HAS_FDS) != 0) { 231d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags |= FLAG_HAS_FDS; 232d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } 233d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey if ((bundle.mFlags & FLAG_HAS_FDS_KNOWN) == 0) { 234d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags &= ~FLAG_HAS_FDS_KNOWN; 235d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } 236719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 237719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 238719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Reports whether the bundle contains any parcelled file descriptors. 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean hasFileDescriptors() { 242d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey if ((mFlags & FLAG_HAS_FDS_KNOWN) == 0) { 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean fdFound = false; // keep going until we find one or run out of data 244719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mParcelledData != null) { 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mParcelledData.hasFileDescriptors()) { 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fdFound = true; 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // It's been unparcelled, so we need to walk the map 251b87655b3e551c6a32f34084c8533800bbd1aff7dDianne Hackborn for (int i=mMap.size()-1; i>=0; i--) { 252b87655b3e551c6a32f34084c8533800bbd1aff7dDianne Hackborn Object obj = mMap.valueAt(i); 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (obj instanceof Parcelable) { 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((((Parcelable)obj).describeContents() 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project & Parcelable.CONTENTS_FILE_DESCRIPTOR) != 0) { 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fdFound = true; 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (obj instanceof Parcelable[]) { 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcelable[] array = (Parcelable[]) obj; 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int n = array.length - 1; n >= 0; n--) { 262e58c7858a39d58a222fe8302dc5ffbe4a25c5bf1Taiju Tsuiki Parcelable p = array[n]; 263e58c7858a39d58a222fe8302dc5ffbe4a25c5bf1Taiju Tsuiki if (p != null && ((p.describeContents() 264e58c7858a39d58a222fe8302dc5ffbe4a25c5bf1Taiju Tsuiki & Parcelable.CONTENTS_FILE_DESCRIPTOR) != 0)) { 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fdFound = true; 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (obj instanceof SparseArray) { 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SparseArray<? extends Parcelable> array = 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project (SparseArray<? extends Parcelable>) obj; 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int n = array.size() - 1; n >= 0; n--) { 273ecd21848731f55978cdac739e6d4460a83449202Taiju Tsuiki Parcelable p = array.valueAt(n); 274ecd21848731f55978cdac739e6d4460a83449202Taiju Tsuiki if (p != null && (p.describeContents() 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project & Parcelable.CONTENTS_FILE_DESCRIPTOR) != 0) { 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fdFound = true; 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (obj instanceof ArrayList) { 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ArrayList array = (ArrayList) obj; 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // an ArrayList here might contain either Strings or 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Parcelables; only look inside for Parcelables 284719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (!array.isEmpty() && (array.get(0) instanceof Parcelable)) { 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int n = array.size() - 1; n >= 0; n--) { 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcelable p = (Parcelable) array.get(n); 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (p != null && ((p.describeContents() 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project & 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 } 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 298d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey if (fdFound) { 299d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags |= FLAG_HAS_FDS; 300250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate } else { 301250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate mFlags &= ~FLAG_HAS_FDS; 302d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } 303d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags |= FLAG_HAS_FDS_KNOWN; 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 305d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey return (mFlags & FLAG_HAS_FDS) != 0; 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 307719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 309a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn * Filter values in Bundle to only basic types. 310a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn * @hide 311a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn */ 312851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn public Bundle filterValues() { 313a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn unparcel(); 314851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn Bundle bundle = this; 315a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn if (mMap != null) { 316851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn ArrayMap<String, Object> map = mMap; 317851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn for (int i = map.size() - 1; i >= 0; i--) { 318851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn Object value = map.valueAt(i); 319a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn if (PersistableBundle.isValidType(value)) { 320a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn continue; 321a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn } 322a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn if (value instanceof Bundle) { 323851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn Bundle newBundle = ((Bundle)value).filterValues(); 324851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn if (newBundle != value) { 325851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn if (map == mMap) { 326851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // The filter had to generate a new bundle, but we have not yet 327851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // created a new one here. Do that now. 328851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn bundle = new Bundle(this); 329851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // Note the ArrayMap<> constructor is guaranteed to generate 330851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // a new object with items in the same order as the original. 331851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn map = bundle.mMap; 332851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn } 333851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // Replace this current entry with the new child bundle. 334851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn map.setValueAt(i, newBundle); 335851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn } 336851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn continue; 337a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn } 338a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn if (value.getClass().getName().startsWith("android.")) { 339a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn continue; 340a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn } 341851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn if (map == mMap) { 342851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // This is the first time we have had to remove something, that means we 343851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // need to switch to a new Bundle. 344851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn bundle = new Bundle(this); 345851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // Note the ArrayMap<> constructor is guaranteed to generate 346851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // a new object with items in the same order as the original. 347851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn map = bundle.mMap; 348851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn } 349851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn map.removeAt(i); 350a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn } 351a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn } 352250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate mFlags |= FLAG_HAS_FDS_KNOWN; 353250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate mFlags &= ~FLAG_HAS_FDS; 354851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn return bundle; 355a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn } 356a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn 357a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn /** 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a byte value into the mapping of this Bundle, replacing 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a byte 3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 364719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 365c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putByte(@Nullable String key, byte value) { 366719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putByte(key, value); 3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a char value into the mapping of this Bundle, replacing 3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. 3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 374c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy * @param value a char 3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 376719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 377c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putChar(@Nullable String key, char value) { 378719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putChar(key, value); 3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a short 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 short 3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 388719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 389c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putShort(@Nullable String key, short value) { 390719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putShort(key, value); 3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a float 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 3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a float 3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 400719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 401c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putFloat(@Nullable String key, float value) { 402719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putFloat(key, value); 4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a CharSequence value into the mapping of this Bundle, replacing 4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a CharSequence, or null 4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 412719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 413c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putCharSequence(@Nullable String key, @Nullable CharSequence value) { 414719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putCharSequence(key, value); 4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a Parcelable value into the mapping of this Bundle, replacing 4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a Parcelable object, or null 4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 424c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putParcelable(@Nullable String key, @Nullable Parcelable value) { 4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMap.put(key, value); 427d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags &= ~FLAG_HAS_FDS_KNOWN; 4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4315ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * Inserts a Size value into the mapping of this Bundle, replacing 4325ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * any existing value for the given key. Either key or value may be null. 4335ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * 4345ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * @param key a String, or null 4355ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * @param value a Size object, or null 4365ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey */ 437c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putSize(@Nullable String key, @Nullable Size value) { 4385ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey unparcel(); 4395ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey mMap.put(key, value); 4405ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey } 4415ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey 4425ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey /** 4435ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * Inserts a SizeF value into the mapping of this Bundle, replacing 4445ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * any existing value for the given key. Either key or value may be null. 4455ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * 4465ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * @param key a String, or null 4475ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * @param value a SizeF object, or null 4485ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey */ 449c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putSizeF(@Nullable String key, @Nullable SizeF value) { 4505ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey unparcel(); 4515ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey mMap.put(key, value); 4525ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey } 4535ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey 4545ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey /** 4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts an array of Parcelable values into the mapping of this Bundle, 4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * replacing any existing value for the given key. Either key or value may 4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * be null. 4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value an array of Parcelable objects, or null 4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 462c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putParcelableArray(@Nullable String key, @Nullable Parcelable[] value) { 4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMap.put(key, value); 465d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags &= ~FLAG_HAS_FDS_KNOWN; 4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a List of Parcelable values into the mapping of this Bundle, 4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * replacing any existing value for the given key. Either key or value may 4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * be null. 4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value an ArrayList of Parcelable objects, or null 4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 476c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putParcelableArrayList(@Nullable String key, 477c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable ArrayList<? extends Parcelable> value) { 4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMap.put(key, value); 480d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags &= ~FLAG_HAS_FDS_KNOWN; 4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 483aeb16e2435f9975b9fa1fc4b747796647a21292eJeff Sharkey /** {@hide} */ 484aeb16e2435f9975b9fa1fc4b747796647a21292eJeff Sharkey public void putParcelableList(String key, List<? extends Parcelable> value) { 485aeb16e2435f9975b9fa1fc4b747796647a21292eJeff Sharkey unparcel(); 486aeb16e2435f9975b9fa1fc4b747796647a21292eJeff Sharkey mMap.put(key, value); 487d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags &= ~FLAG_HAS_FDS_KNOWN; 488aeb16e2435f9975b9fa1fc4b747796647a21292eJeff Sharkey } 489aeb16e2435f9975b9fa1fc4b747796647a21292eJeff Sharkey 4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a SparceArray of Parcelable values into the mapping of this 4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Bundle, replacing any existing value for the given key. Either key 4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or value may be null. 4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 4969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a SparseArray of Parcelable objects, or null 4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 498c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putSparseParcelableArray(@Nullable String key, 499c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable SparseArray<? extends Parcelable> value) { 5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMap.put(key, value); 502d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags &= ~FLAG_HAS_FDS_KNOWN; 5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts an ArrayList<Integer> value into the mapping of this Bundle, replacing 5079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value an ArrayList<Integer> object, or null 5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 512719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 513c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putIntegerArrayList(@Nullable String key, @Nullable ArrayList<Integer> value) { 514719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putIntegerArrayList(key, value); 5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts an ArrayList<String> value into the mapping of this Bundle, replacing 5199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 5209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 5229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value an ArrayList<String> object, or null 5239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 524719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 525c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putStringArrayList(@Nullable String key, @Nullable ArrayList<String> value) { 526719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putStringArrayList(key, value); 5279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 53008bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * Inserts an ArrayList<CharSequence> value into the mapping of this Bundle, replacing 53108bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * any existing value for the given key. Either key or value may be null. 53208bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * 53308bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * @param key a String, or null 53408bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * @param value an ArrayList<CharSequence> object, or null 53508bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert */ 536719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 537c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putCharSequenceArrayList(@Nullable String key, 538c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable ArrayList<CharSequence> value) { 539719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putCharSequenceArrayList(key, value); 54008bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert } 54108bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert 54208bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert /** 5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a Serializable value into the mapping of this Bundle, replacing 5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a Serializable object, or null 5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 549719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 550c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putSerializable(@Nullable String key, @Nullable Serializable value) { 551719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putSerializable(key, value); 5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a byte array value into the mapping of this Bundle, replacing 5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 5599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a byte array object, or null 5609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 561719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 562c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putByteArray(@Nullable String key, @Nullable byte[] value) { 563719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putByteArray(key, value); 5649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a short array 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 short array object, or null 5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 573719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 574c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putShortArray(@Nullable String key, @Nullable short[] value) { 575719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putShortArray(key, value); 5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a char 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 char array object, or null 5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 585719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 586c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putCharArray(@Nullable String key, @Nullable char[] value) { 587719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putCharArray(key, value); 5889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a float 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 float array object, or null 5969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 597719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 598c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putFloatArray(@Nullable String key, @Nullable float[] value) { 599719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putFloatArray(key, value); 6009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 60308bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * Inserts a CharSequence array value into the mapping of this Bundle, replacing 60408bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * any existing value for the given key. Either key or value may be null. 60508bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * 60608bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * @param key a String, or null 60708bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * @param value a CharSequence array object, or null 60808bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert */ 609719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 610c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putCharSequenceArray(@Nullable String key, @Nullable CharSequence[] value) { 611719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putCharSequenceArray(key, value); 61208bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert } 61308bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert 61408bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert /** 6159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a Bundle 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 Bundle object, or null 6209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 621c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putBundle(@Nullable String key, @Nullable Bundle value) { 6229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 6239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMap.put(key, value); 6249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6273cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * Inserts an {@link IBinder} value into the mapping of this Bundle, replacing 6283cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * any existing value for the given key. Either key or value may be null. 6293cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * 6303cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * <p class="note">You should be very careful when using this function. In many 6313cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * places where Bundles are used (such as inside of Intent objects), the Bundle 6323cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * can live longer inside of another process than the process that had originally 6333cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * created it. In that case, the IBinder you supply here will become invalid 6343cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * when your process goes away, and no longer usable, even if a new process is 6353cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * created for you later on.</p> 6363cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * 6373cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * @param key a String, or null 6383cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * @param value an IBinder object, or null 6393cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn */ 640c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putBinder(@Nullable String key, @Nullable IBinder value) { 6413cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn unparcel(); 6423cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn mMap.put(key, value); 6433cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn } 6443cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn 6453cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn /** 6469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts an IBinder value into the mapping of this Bundle, replacing 6479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 6489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 6509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value an IBinder object, or null 6519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated 6533cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * @hide This is the old name of the function. 6549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 656c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putIBinder(@Nullable String key, @Nullable IBinder value) { 6579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 6589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMap.put(key, value); 6599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or (byte) 0 if 6639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key. 6649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String 6669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a byte value 6679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 668719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 6699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public byte getByte(String key) { 670719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getByte(key); 6719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or defaultValue if 6759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key. 6769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String 6789f6cb87522d395eacd87dff1da525f4dc9809d27Nicolas Klein * @param defaultValue Value to return if key does not exist 6799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a byte value 6809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 681719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 6829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Byte getByte(String key, byte defaultValue) { 683719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getByte(key, defaultValue); 6849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6879f6cb87522d395eacd87dff1da525f4dc9809d27Nicolas Klein * Returns the value associated with the given key, or (char) 0 if 6889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key. 6899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String 6919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a char value 6929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 693719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 6949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public char getChar(String key) { 695719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getChar(key); 6969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6999f6cb87522d395eacd87dff1da525f4dc9809d27Nicolas Klein * Returns the value associated with the given key, or defaultValue if 7009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key. 7019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String 7039f6cb87522d395eacd87dff1da525f4dc9809d27Nicolas Klein * @param defaultValue Value to return if key does not exist 7049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a char value 7059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 706719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 7079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public char getChar(String key, char defaultValue) { 708719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getChar(key, defaultValue); 7099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or (short) 0 if 7139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key. 7149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String 7169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a short value 7179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 718719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 7199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public short getShort(String key) { 720719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getShort(key); 7219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or defaultValue if 7259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key. 7269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String 7289f6cb87522d395eacd87dff1da525f4dc9809d27Nicolas Klein * @param defaultValue Value to return if key does not exist 7299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a short value 7309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 731719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 7329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public short getShort(String key, short defaultValue) { 733719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getShort(key, defaultValue); 7349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or 0.0f if 7389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key. 7399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String 7419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a float value 7429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 743719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 7449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public float getFloat(String key) { 745719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getFloat(key); 7469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or defaultValue if 7509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key. 7519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String 7539f6cb87522d395eacd87dff1da525f4dc9809d27Nicolas Klein * @param defaultValue Value to return if key does not exist 7549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a float value 7559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 756719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 7579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public float getFloat(String key, float defaultValue) { 758719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getFloat(key, defaultValue); 7599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 7639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 7649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 7659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 7679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a CharSequence value, or null 7689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 769719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 770c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 771c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public CharSequence getCharSequence(@Nullable String key) { 772719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getCharSequence(key); 7739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 776e3a7f628c6d9fef42be24999b3137ebe5c6f3525Dianne Hackborn * Returns the value associated with the given key, or defaultValue if 777ca2197b0457b1626b95a053d835ceaca43ac0286Narayan Kamath * no mapping of the desired type exists for the given key or if a null 778ca2197b0457b1626b95a053d835ceaca43ac0286Narayan Kamath * value is explicitly associatd with the given key. 779e3a7f628c6d9fef42be24999b3137ebe5c6f3525Dianne Hackborn * 780e3a7f628c6d9fef42be24999b3137ebe5c6f3525Dianne Hackborn * @param key a String, or null 781ca2197b0457b1626b95a053d835ceaca43ac0286Narayan Kamath * @param defaultValue Value to return if key does not exist or if a null 782ca2197b0457b1626b95a053d835ceaca43ac0286Narayan Kamath * value is associated with the given key. 783116751d84f6d276f2cac7074abd9f8ba23742958Christopher Tate * @return the CharSequence value associated with the given key, or defaultValue 784116751d84f6d276f2cac7074abd9f8ba23742958Christopher Tate * if no valid CharSequence object is currently mapped to that key. 785e3a7f628c6d9fef42be24999b3137ebe5c6f3525Dianne Hackborn */ 786719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 787c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public CharSequence getCharSequence(@Nullable String key, CharSequence defaultValue) { 788719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getCharSequence(key, defaultValue); 789e3a7f628c6d9fef42be24999b3137ebe5c6f3525Dianne Hackborn } 790e3a7f628c6d9fef42be24999b3137ebe5c6f3525Dianne Hackborn 791e3a7f628c6d9fef42be24999b3137ebe5c6f3525Dianne Hackborn /** 7929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 7939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 7949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 7959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 7975ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * @return a Size value, or null 7985ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey */ 799c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 800c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public Size getSize(@Nullable String key) { 8015ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey unparcel(); 8025ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey final Object o = mMap.get(key); 8035ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey try { 8045ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey return (Size) o; 8055ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey } catch (ClassCastException e) { 8065ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey typeWarning(key, o, "Size", e); 8075ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey return null; 8085ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey } 8095ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey } 8105ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey 8115ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey /** 8125ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * Returns the value associated with the given key, or null if 8135ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * no mapping of the desired type exists for the given key or a null 8145ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * value is explicitly associated with the key. 8155ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * 8165ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * @param key a String, or null 8175ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * @return a Size value, or null 8185ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey */ 819c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 820c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public SizeF getSizeF(@Nullable String key) { 8215ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey unparcel(); 8225ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey final Object o = mMap.get(key); 8235ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey try { 8245ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey return (SizeF) o; 8255ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey } catch (ClassCastException e) { 8265ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey typeWarning(key, o, "SizeF", e); 8275ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey return null; 8285ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey } 8295ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey } 8305ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey 8315ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey /** 8325ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * Returns the value associated with the given key, or null if 8335ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * no mapping of the desired type exists for the given key or a null 8345ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * value is explicitly associated with the key. 8355ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * 8365ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * @param key a String, or null 8379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a Bundle value, or null 8389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 839c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 840c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public Bundle getBundle(@Nullable String key) { 8419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 8429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object o = mMap.get(key); 8439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (o == null) { 8449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 8459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 8479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (Bundle) o; 8489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (ClassCastException e) { 8499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project typeWarning(key, o, "Bundle", e); 8509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 8519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 8569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 8579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 8589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 8609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a Parcelable value, or null 8619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 862c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 863c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public <T extends Parcelable> T getParcelable(@Nullable String key) { 8649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 8659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object o = mMap.get(key); 8669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (o == null) { 8679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 8689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 8709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (T) o; 8719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (ClassCastException e) { 8729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project typeWarning(key, o, "Parcelable", e); 8739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 8749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 8799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 8809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 8819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 8839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a Parcelable[] value, or null 8849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 885c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 886c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public Parcelable[] getParcelableArray(@Nullable String key) { 8879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 8889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object o = mMap.get(key); 8899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (o == null) { 8909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 8919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 8939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (Parcelable[]) o; 8949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (ClassCastException e) { 8959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project typeWarning(key, o, "Parcelable[]", e); 8969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 8979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 9019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 9029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 9039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 9049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 9069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return an ArrayList<T> value, or null 9079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 908c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 909c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public <T extends Parcelable> ArrayList<T> getParcelableArrayList(@Nullable String key) { 9109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 9119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object o = mMap.get(key); 9129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (o == null) { 9139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 9149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 9169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (ArrayList<T>) o; 9179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (ClassCastException e) { 9189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project typeWarning(key, o, "ArrayList", e); 9199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 9209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 9249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 9259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 9269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 9279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 9299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a SparseArray of T values, or null 9319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 932c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 933c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public <T extends Parcelable> SparseArray<T> getSparseParcelableArray(@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 (SparseArray<T>) o; 9419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (ClassCastException e) { 9429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project typeWarning(key, o, "SparseArray", 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 * @return a Serializable value, or null 9549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 955719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 956c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 957c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public Serializable getSerializable(@Nullable String key) { 958719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getSerializable(key); 9599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 9629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 9639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 9649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 9659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 9679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return an ArrayList<String> value, or null 9689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 969719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 970c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 971c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public ArrayList<Integer> getIntegerArrayList(@Nullable String key) { 972719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getIntegerArrayList(key); 9739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 9769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 9779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 9789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 9799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 9819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return an ArrayList<String> value, or null 9829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 983719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 984c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 985c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public ArrayList<String> getStringArrayList(@Nullable String key) { 986719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getStringArrayList(key); 9879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 9909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 9919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 9929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 9939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 99508bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * @return an ArrayList<CharSequence> value, or null 99608bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert */ 997719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 998c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 999c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public ArrayList<CharSequence> getCharSequenceArrayList(@Nullable String key) { 1000719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getCharSequenceArrayList(key); 100108bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert } 100208bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert 100308bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert /** 100408bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * Returns the value associated with the given key, or null if 100508bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * no mapping of the desired type exists for the given key or a null 10069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 10079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 10089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 10099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a byte[] value, or null 10109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1011719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1012c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1013c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public byte[] getByteArray(@Nullable String key) { 1014719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getByteArray(key); 10159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 10199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 10209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 10219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 10229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 10239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a short[] value, or null 10249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1025719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1026c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1027c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public short[] getShortArray(@Nullable String key) { 1028719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getShortArray(key); 10299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 10339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 10349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 10359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 10369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 10379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a char[] value, or null 10389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1039719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1040c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1041c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public char[] getCharArray(@Nullable String key) { 1042719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getCharArray(key); 10439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 10479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 10489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 10499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 10509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 10519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a float[] value, or null 10529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1053719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1054c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1055c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public float[] getFloatArray(@Nullable String key) { 1056719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getFloatArray(key); 10579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 10619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 10629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 10639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 10649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 106508bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * @return a CharSequence[] value, or null 106608bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert */ 1067719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1068c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1069c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public CharSequence[] getCharSequenceArray(@Nullable String key) { 1070719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getCharSequenceArray(key); 107108bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert } 107208bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert 107308bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert /** 107408bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * Returns the value associated with the given key, or null if 107508bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * no mapping of the desired type exists for the given key or a null 107608bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * value is explicitly associated with the key. 107708bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * 107808bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * @param key a String, or null 10799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return an IBinder value, or null 10803cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn */ 1081c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1082c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public IBinder getBinder(@Nullable String key) { 10833cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn unparcel(); 10843cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn Object o = mMap.get(key); 10853cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn if (o == null) { 10863cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn return null; 10873cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn } 10883cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn try { 10893cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn return (IBinder) o; 10903cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn } catch (ClassCastException e) { 10913cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn typeWarning(key, o, "IBinder", e); 10923cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn return null; 10933cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn } 10943cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn } 10953cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn 10963cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn /** 10973cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * Returns the value associated with the given key, or null if 10983cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * no mapping of the desired type exists for the given key or a null 10993cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * value is explicitly associated with the key. 11003cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * 11013cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * @param key a String, or null 11023cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * @return an IBinder value, or null 11039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 11049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated 11053cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * @hide This is the old name of the function. 11069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 11079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 1108c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1109c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public IBinder getIBinder(@Nullable String key) { 11109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 11119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object o = mMap.get(key); 11129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (o == null) { 11139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 11149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 11169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (IBinder) o; 11179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (ClassCastException e) { 11189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project typeWarning(key, o, "IBinder", e); 11199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 11209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Parcelable.Creator<Bundle> CREATOR = 11249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new Parcelable.Creator<Bundle>() { 1125719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 11269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Bundle createFromParcel(Parcel in) { 11279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return in.readBundle(); 11289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1130719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 11319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Bundle[] newArray(int size) { 11329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new Bundle[size]; 11339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 11359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 11379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Report the nature of this Parcelable's contents 11389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1139719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 11409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 11419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int mask = 0; 11429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (hasFileDescriptors()) { 11439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mask |= Parcelable.CONTENTS_FILE_DESCRIPTOR; 11449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mask; 11469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1147719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 11489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 11499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Writes the Bundle contents to a Parcel, typically in order for 11509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * it to be passed through an IBinder connection. 11519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param parcel The parcel to copy this bundle to. 11529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1153719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 11549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel parcel, int flags) { 1155d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey final boolean oldAllowFds = parcel.pushAllowFds((mFlags & FLAG_ALLOW_FDS) != 0); 11569ecebbfbf768fd63e9a6c9a09c86d81c7737ee2dDianne Hackborn try { 1157719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.writeToParcelInner(parcel, flags); 11589ecebbfbf768fd63e9a6c9a09c86d81c7737ee2dDianne Hackborn } finally { 1159c04db7e06737c5b9bae276ac462858d44002672eDianne Hackborn parcel.restoreAllowFds(oldAllowFds); 11606aff905048ba3b03724f17e2aba9089872e14cd2Dianne Hackborn } 11619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 11649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Reads the Parcel contents into this Bundle, typically in order for 11659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * it to be passed through an IBinder connection. 11669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param parcel The parcel to overwrite this bundle from. 11679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 11689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void readFromParcel(Parcel parcel) { 1169719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.readFromParcelInner(parcel); 11707410fb4b394c46fcaa195ba1071750469f776c80Jeff Sharkey mFlags = FLAG_HAS_FDS_KNOWN | FLAG_ALLOW_FDS; 1171d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey if (mParcelledData.hasFileDescriptors()) { 1172d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags |= FLAG_HAS_FDS; 1173d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } 11749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 11779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public synchronized String toString() { 11789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mParcelledData != null) { 117952764cba5968888180ceedf717d85e08ffd747ccAndreas Gampe if (isEmptyParcel()) { 11808aee64d18b6b90e46e886a80d8de0467d682ddc4Dianne Hackborn return "Bundle[EMPTY_PARCEL]"; 11818aee64d18b6b90e46e886a80d8de0467d682ddc4Dianne Hackborn } else { 11828aee64d18b6b90e46e886a80d8de0467d682ddc4Dianne Hackborn return "Bundle[mParcelledData.dataSize=" + 11838aee64d18b6b90e46e886a80d8de0467d682ddc4Dianne Hackborn mParcelledData.dataSize() + "]"; 11848aee64d18b6b90e46e886a80d8de0467d682ddc4Dianne Hackborn } 11859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "Bundle[" + mMap.toString() + "]"; 11879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1189