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; 2485f2fbcb1fc3277ea825ec3dc52f636b47302425Kweku Adamsimport android.util.proto.ProtoOutputStream; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 264501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onukiimport com.android.internal.annotations.VisibleForTesting; 274501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.Serializable; 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.ArrayList; 30aeb16e2435f9975b9fa1fc4b747796647a21292eJeff Sharkeyimport java.util.List; 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 33d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * A mapping from String keys to various {@link Parcelable} values. 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 35d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * @see PersistableBundle 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 370a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautnerpublic final class Bundle extends BaseBundle implements Cloneable, Parcelable { 384501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki @VisibleForTesting 394501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki static final int FLAG_HAS_FDS = 1 << 8; 404501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki 414501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki @VisibleForTesting 424501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki static final int FLAG_HAS_FDS_KNOWN = 1 << 9; 434501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki 444501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki @VisibleForTesting 454501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki static final int FLAG_ALLOW_FDS = 1 << 10; 46d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Bundle EMPTY; 48d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey 4997f82f28da5a2d3bc6229fee9ce493dc037727b9Makoto Onuki /** 5097f82f28da5a2d3bc6229fee9ce493dc037727b9Makoto Onuki * Special extras used to denote extras have been stripped off. 5197f82f28da5a2d3bc6229fee9ce493dc037727b9Makoto Onuki * @hide 5297f82f28da5a2d3bc6229fee9ce493dc037727b9Makoto Onuki */ 5397f82f28da5a2d3bc6229fee9ce493dc037727b9Makoto Onuki public static final Bundle STRIPPED; 5497f82f28da5a2d3bc6229fee9ce493dc037727b9Makoto Onuki 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static { 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project EMPTY = new Bundle(); 57b87655b3e551c6a32f34084c8533800bbd1aff7dDianne Hackborn EMPTY.mMap = ArrayMap.EMPTY; 5897f82f28da5a2d3bc6229fee9ce493dc037727b9Makoto Onuki 5997f82f28da5a2d3bc6229fee9ce493dc037727b9Makoto Onuki STRIPPED = new Bundle(); 6097f82f28da5a2d3bc6229fee9ce493dc037727b9Makoto Onuki STRIPPED.putInt("STRIPPED", 1); 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Constructs a new, empty Bundle. 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Bundle() { 67719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super(); 687410fb4b394c46fcaa195ba1071750469f776c80Jeff Sharkey mFlags = FLAG_HAS_FDS_KNOWN | FLAG_ALLOW_FDS; 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Constructs a Bundle whose data is stored as a Parcel. The data 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * will be unparcelled on first contact, using the assigned ClassLoader. 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param parcelledData a Parcel containing a Bundle 764501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki * 774501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki * @hide 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 794501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki @VisibleForTesting 804501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki public Bundle(Parcel parcelledData) { 81719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super(parcelledData); 824501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki mFlags = FLAG_ALLOW_FDS; 834501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki maybePrefillHasFds(); 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 864501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki /** 874501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki * Constructor from a parcel for when the length is known *and is not stored in the parcel.* 884501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki * The other constructor that takes a parcel assumes the length is in the parcel. 894501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki * 904501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki * @hide 914501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki */ 924501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki @VisibleForTesting 934501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki public Bundle(Parcel parcelledData, int length) { 94719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super(parcelledData, length); 954501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki mFlags = FLAG_ALLOW_FDS; 964501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki maybePrefillHasFds(); 974501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki } 984501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki 994501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki /** 1004501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki * If {@link #mParcelledData} is not null, copy the HAS FDS bit from it because it's fast. 1014501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki * Otherwise (if {@link #mParcelledData} is already null), leave {@link #FLAG_HAS_FDS_KNOWN} 1024501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki * unset, because scanning a map is slower. We'll do it lazily in 1034501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki * {@link #hasFileDescriptors()}. 1044501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki */ 1054501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki private void maybePrefillHasFds() { 1064501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki if (mParcelledData != null) { 1074501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki if (mParcelledData.hasFileDescriptors()) { 1084501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki mFlags |= FLAG_HAS_FDS | FLAG_HAS_FDS_KNOWN; 1094501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki } else { 1104501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki mFlags |= FLAG_HAS_FDS_KNOWN; 1114501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki } 112d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } 1136aff905048ba3b03724f17e2aba9089872e14cd2Dianne Hackborn } 1146aff905048ba3b03724f17e2aba9089872e14cd2Dianne Hackborn 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Constructs a new, empty Bundle that uses a specific ClassLoader for 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * instantiating Parcelable and Serializable objects. 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param loader An explicit ClassLoader to use when instantiating objects 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * inside of the Bundle. 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Bundle(ClassLoader loader) { 123719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super(loader); 1247410fb4b394c46fcaa195ba1071750469f776c80Jeff Sharkey mFlags = FLAG_HAS_FDS_KNOWN | FLAG_ALLOW_FDS; 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Constructs a new, empty Bundle sized to hold the given number of 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * elements. The Bundle will grow as needed. 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param capacity the initial capacity of the Bundle 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Bundle(int capacity) { 134719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super(capacity); 1357410fb4b394c46fcaa195ba1071750469f776c80Jeff Sharkey mFlags = FLAG_HAS_FDS_KNOWN | FLAG_ALLOW_FDS; 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Constructs a Bundle containing a copy of the mappings from the given 1402510b37518fd2fa227a9399b9269dd9a04ceb8d9Dianne Hackborn * Bundle. Does only a shallow copy of the original Bundle -- see 1412510b37518fd2fa227a9399b9269dd9a04ceb8d9Dianne Hackborn * {@link #deepCopy()} if that is not what you want. 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param b a Bundle to be copied. 1442510b37518fd2fa227a9399b9269dd9a04ceb8d9Dianne Hackborn * 1452510b37518fd2fa227a9399b9269dd9a04ceb8d9Dianne Hackborn * @see #deepCopy() 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Bundle(Bundle b) { 148719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super(b); 149d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags = b.mFlags; 150719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 151719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 152719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 153719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Constructs a Bundle containing a copy of the mappings from the given 1542510b37518fd2fa227a9399b9269dd9a04ceb8d9Dianne Hackborn * PersistableBundle. Does only a shallow copy of the PersistableBundle -- see 1552510b37518fd2fa227a9399b9269dd9a04ceb8d9Dianne Hackborn * {@link PersistableBundle#deepCopy()} if you don't want that. 156719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1572510b37518fd2fa227a9399b9269dd9a04ceb8d9Dianne Hackborn * @param b a PersistableBundle to be copied. 158719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 159719e6b167041ffaffc2245f692714c8de191863fCraig Mautner public Bundle(PersistableBundle b) { 160719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super(b); 1617410fb4b394c46fcaa195ba1071750469f776c80Jeff Sharkey mFlags = FLAG_HAS_FDS_KNOWN | FLAG_ALLOW_FDS; 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 165ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn * Constructs a Bundle without initializing it. 166ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn */ 167ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn Bundle(boolean doInit) { 168ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn super(doInit); 169ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn } 170ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn 171ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn /** 1721877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick * Make a Bundle for a single key/value pair. 1731877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick * 1741877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick * @hide 1751877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick */ 1761877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick public static Bundle forPair(String key, String value) { 1771877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick Bundle b = new Bundle(1); 1781877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick b.putString(key, value); 1791877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick return b; 1801877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick } 1811877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick 1821877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick /** 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Changes the ClassLoader this Bundle uses when instantiating objects. 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param loader An explicit ClassLoader to use when instantiating objects 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * inside of the Bundle. 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 188719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setClassLoader(ClassLoader loader) { 190719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.setClassLoader(loader); 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1945164246d7e47b9c995ca1e1587f3056eb777f60bDianne Hackborn * Return the ClassLoader currently associated with this Bundle. 1955164246d7e47b9c995ca1e1587f3056eb777f60bDianne Hackborn */ 196719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1975164246d7e47b9c995ca1e1587f3056eb777f60bDianne Hackborn public ClassLoader getClassLoader() { 198719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getClassLoader(); 1995164246d7e47b9c995ca1e1587f3056eb777f60bDianne Hackborn } 2009ecebbfbf768fd63e9a6c9a09c86d81c7737ee2dDianne Hackborn 201d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey /** {@hide} */ 2029ecebbfbf768fd63e9a6c9a09c86d81c7737ee2dDianne Hackborn public boolean setAllowFds(boolean allowFds) { 203d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey final boolean orig = (mFlags & FLAG_ALLOW_FDS) != 0; 204d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey if (allowFds) { 205d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags |= FLAG_ALLOW_FDS; 206d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } else { 207d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags &= ~FLAG_ALLOW_FDS; 208d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } 2099ecebbfbf768fd63e9a6c9a09c86d81c7737ee2dDianne Hackborn return orig; 2109ecebbfbf768fd63e9a6c9a09c86d81c7737ee2dDianne Hackborn } 2119ecebbfbf768fd63e9a6c9a09c86d81c7737ee2dDianne Hackborn 2125164246d7e47b9c995ca1e1587f3056eb777f60bDianne Hackborn /** 213d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * Mark if this Bundle is okay to "defuse." That is, it's okay for system 214d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * processes to ignore any {@link BadParcelableException} encountered when 215d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * unparceling it, leaving an empty bundle in its place. 216d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * <p> 217d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * This should <em>only</em> be set when the Bundle reaches its final 218d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * destination, otherwise a system process may clobber contents that were 219d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * destined for an app that could have unparceled them. 220d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * 221d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey * @hide 222d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey */ 223d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey public void setDefusable(boolean defusable) { 224d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey if (defusable) { 225d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags |= FLAG_DEFUSABLE; 226d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } else { 227d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags &= ~FLAG_DEFUSABLE; 228d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } 229d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } 230d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey 231a04c7a7c6442b8c6f87f5dd11fc5659cdb92deccJeff Sharkey /** {@hide} */ 232a04c7a7c6442b8c6f87f5dd11fc5659cdb92deccJeff Sharkey public static Bundle setDefusable(Bundle bundle, boolean defusable) { 233a04c7a7c6442b8c6f87f5dd11fc5659cdb92deccJeff Sharkey if (bundle != null) { 234a04c7a7c6442b8c6f87f5dd11fc5659cdb92deccJeff Sharkey bundle.setDefusable(defusable); 235a04c7a7c6442b8c6f87f5dd11fc5659cdb92deccJeff Sharkey } 236a04c7a7c6442b8c6f87f5dd11fc5659cdb92deccJeff Sharkey return bundle; 237a04c7a7c6442b8c6f87f5dd11fc5659cdb92deccJeff Sharkey } 238a04c7a7c6442b8c6f87f5dd11fc5659cdb92deccJeff Sharkey 239d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey /** 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Clones the current Bundle. The internal map is cloned, but the keys and 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * values to which it refers are copied by reference. 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Object clone() { 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new Bundle(this); 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 249ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn * Make a deep copy of the given bundle. Traverses into inner containers and copies 250ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn * them as well, so they are not shared across bundles. Will traverse in to 251ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn * {@link Bundle}, {@link PersistableBundle}, {@link ArrayList}, and all types of 252ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn * primitive arrays. Other types of objects (such as Parcelable or Serializable) 253ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn * are referenced as-is and not copied in any way. 254ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn */ 2552510b37518fd2fa227a9399b9269dd9a04ceb8d9Dianne Hackborn public Bundle deepCopy() { 256ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn Bundle b = new Bundle(false); 257ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn b.copyInternal(this, true); 258ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn return b; 259ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn } 260ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn 261ba60473a6539d16bef8720d79b5559512303bddfDianne Hackborn /** 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Removes all elements from the mapping of this Bundle. 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 264719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void clear() { 266719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.clear(); 2677410fb4b394c46fcaa195ba1071750469f776c80Jeff Sharkey mFlags = FLAG_HAS_FDS_KNOWN | FLAG_ALLOW_FDS; 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 271250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate * Removes any entry with the given key from the mapping of this Bundle. 272250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate * 273250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate * @param key a String key 274250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate */ 275250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate public void remove(String key) { 276250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate super.remove(key); 277250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate if ((mFlags & FLAG_HAS_FDS) != 0) { 278250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate mFlags &= ~FLAG_HAS_FDS_KNOWN; 279250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate } 280250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate } 281250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate 282250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate /** 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts all mappings from the given Bundle into this Bundle. 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 285719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param bundle a Bundle 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 287719e6b167041ffaffc2245f692714c8de191863fCraig Mautner public void putAll(Bundle bundle) { 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 289719e6b167041ffaffc2245f692714c8de191863fCraig Mautner bundle.unparcel(); 290719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.putAll(bundle.mMap); 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 292d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey // FD state is now known if and only if both bundles already knew 293d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey if ((bundle.mFlags & FLAG_HAS_FDS) != 0) { 294d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags |= FLAG_HAS_FDS; 295d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } 296d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey if ((bundle.mFlags & FLAG_HAS_FDS_KNOWN) == 0) { 297d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags &= ~FLAG_HAS_FDS_KNOWN; 298d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } 299719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 300719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 301719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 302fab200fdad9efd50c58b7bafef07c779d3256d7bSudheer Shanka * Return the size of {@link #mParcelledData} in bytes if available, otherwise {@code 0}. 303fab200fdad9efd50c58b7bafef07c779d3256d7bSudheer Shanka * 304fab200fdad9efd50c58b7bafef07c779d3256d7bSudheer Shanka * @hide 305fab200fdad9efd50c58b7bafef07c779d3256d7bSudheer Shanka */ 306fab200fdad9efd50c58b7bafef07c779d3256d7bSudheer Shanka public int getSize() { 307fab200fdad9efd50c58b7bafef07c779d3256d7bSudheer Shanka if (mParcelledData != null) { 308fab200fdad9efd50c58b7bafef07c779d3256d7bSudheer Shanka return mParcelledData.dataSize(); 309fab200fdad9efd50c58b7bafef07c779d3256d7bSudheer Shanka } else { 310fab200fdad9efd50c58b7bafef07c779d3256d7bSudheer Shanka return 0; 311fab200fdad9efd50c58b7bafef07c779d3256d7bSudheer Shanka } 312fab200fdad9efd50c58b7bafef07c779d3256d7bSudheer Shanka } 313fab200fdad9efd50c58b7bafef07c779d3256d7bSudheer Shanka 314fab200fdad9efd50c58b7bafef07c779d3256d7bSudheer Shanka /** 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Reports whether the bundle contains any parcelled file descriptors. 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean hasFileDescriptors() { 318d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey if ((mFlags & FLAG_HAS_FDS_KNOWN) == 0) { 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean fdFound = false; // keep going until we find one or run out of data 320719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mParcelledData != null) { 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mParcelledData.hasFileDescriptors()) { 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fdFound = true; 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // It's been unparcelled, so we need to walk the map 327b87655b3e551c6a32f34084c8533800bbd1aff7dDianne Hackborn for (int i=mMap.size()-1; i>=0; i--) { 328b87655b3e551c6a32f34084c8533800bbd1aff7dDianne Hackborn Object obj = mMap.valueAt(i); 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (obj instanceof Parcelable) { 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((((Parcelable)obj).describeContents() 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project & Parcelable.CONTENTS_FILE_DESCRIPTOR) != 0) { 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fdFound = true; 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (obj instanceof Parcelable[]) { 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcelable[] array = (Parcelable[]) obj; 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int n = array.length - 1; n >= 0; n--) { 338e58c7858a39d58a222fe8302dc5ffbe4a25c5bf1Taiju Tsuiki Parcelable p = array[n]; 339e58c7858a39d58a222fe8302dc5ffbe4a25c5bf1Taiju Tsuiki if (p != null && ((p.describeContents() 340e58c7858a39d58a222fe8302dc5ffbe4a25c5bf1Taiju Tsuiki & Parcelable.CONTENTS_FILE_DESCRIPTOR) != 0)) { 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fdFound = true; 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (obj instanceof SparseArray) { 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SparseArray<? extends Parcelable> array = 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project (SparseArray<? extends Parcelable>) obj; 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int n = array.size() - 1; n >= 0; n--) { 349ecd21848731f55978cdac739e6d4460a83449202Taiju Tsuiki Parcelable p = array.valueAt(n); 350ecd21848731f55978cdac739e6d4460a83449202Taiju Tsuiki if (p != null && (p.describeContents() 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project & Parcelable.CONTENTS_FILE_DESCRIPTOR) != 0) { 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fdFound = true; 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (obj instanceof ArrayList) { 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ArrayList array = (ArrayList) obj; 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // an ArrayList here might contain either Strings or 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Parcelables; only look inside for Parcelables 360719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (!array.isEmpty() && (array.get(0) instanceof Parcelable)) { 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int n = array.size() - 1; n >= 0; n--) { 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcelable p = (Parcelable) array.get(n); 3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (p != null && ((p.describeContents() 3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project & Parcelable.CONTENTS_FILE_DESCRIPTOR) != 0)) { 3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fdFound = true; 3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 374d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey if (fdFound) { 375d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags |= FLAG_HAS_FDS; 376250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate } else { 377250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate mFlags &= ~FLAG_HAS_FDS; 378d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey } 379d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags |= FLAG_HAS_FDS_KNOWN; 3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 381d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey return (mFlags & FLAG_HAS_FDS) != 0; 3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 383719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 385a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn * Filter values in Bundle to only basic types. 386a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn * @hide 387a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn */ 388851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn public Bundle filterValues() { 389a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn unparcel(); 390851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn Bundle bundle = this; 391a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn if (mMap != null) { 392851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn ArrayMap<String, Object> map = mMap; 393851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn for (int i = map.size() - 1; i >= 0; i--) { 394851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn Object value = map.valueAt(i); 395a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn if (PersistableBundle.isValidType(value)) { 396a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn continue; 397a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn } 398a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn if (value instanceof Bundle) { 399851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn Bundle newBundle = ((Bundle)value).filterValues(); 400851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn if (newBundle != value) { 401851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn if (map == mMap) { 402851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // The filter had to generate a new bundle, but we have not yet 403851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // created a new one here. Do that now. 404851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn bundle = new Bundle(this); 405851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // Note the ArrayMap<> constructor is guaranteed to generate 406851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // a new object with items in the same order as the original. 407851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn map = bundle.mMap; 408851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn } 409851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // Replace this current entry with the new child bundle. 410851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn map.setValueAt(i, newBundle); 411851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn } 412851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn continue; 413a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn } 414a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn if (value.getClass().getName().startsWith("android.")) { 415a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn continue; 416a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn } 417851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn if (map == mMap) { 418851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // This is the first time we have had to remove something, that means we 419851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // need to switch to a new Bundle. 420851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn bundle = new Bundle(this); 421851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // Note the ArrayMap<> constructor is guaranteed to generate 422851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn // a new object with items in the same order as the original. 423851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn map = bundle.mMap; 424851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn } 425851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn map.removeAt(i); 426a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn } 427a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn } 428250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate mFlags |= FLAG_HAS_FDS_KNOWN; 429250985f556a0cb60ced826b8c9a34a11e29db008Christopher Tate mFlags &= ~FLAG_HAS_FDS; 430851ec49de73913547a51476e9c80cccfd7c15572Dianne Hackborn return bundle; 431a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn } 432a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn 433a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn /** 4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a byte value into the mapping of this Bundle, replacing 4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. 4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a byte 4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 440719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 441c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putByte(@Nullable String key, byte value) { 442719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putByte(key, value); 4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a char value into the mapping of this Bundle, replacing 4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. 4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 450c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy * @param value a char 4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 452719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 453c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putChar(@Nullable String key, char value) { 454719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putChar(key, value); 4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a short value into the mapping of this Bundle, replacing 4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. 4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a short 4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 464719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 465c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putShort(@Nullable String key, short value) { 466719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putShort(key, value); 4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a float value into the mapping of this Bundle, replacing 4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. 4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a float 4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 476719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 477c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putFloat(@Nullable String key, float value) { 478719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putFloat(key, value); 4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a CharSequence value into the mapping of this Bundle, replacing 4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a CharSequence, or null 4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 488719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 489c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putCharSequence(@Nullable String key, @Nullable CharSequence value) { 490719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putCharSequence(key, value); 4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a Parcelable value into the mapping of this Bundle, replacing 4959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 4969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a Parcelable object, or null 4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 500c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putParcelable(@Nullable String key, @Nullable Parcelable value) { 5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMap.put(key, value); 503d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags &= ~FLAG_HAS_FDS_KNOWN; 5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5075ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * Inserts a Size value into the mapping of this Bundle, replacing 5085ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * any existing value for the given key. Either key or value may be null. 5095ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * 5105ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * @param key a String, or null 5115ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * @param value a Size object, or null 5125ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey */ 513c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putSize(@Nullable String key, @Nullable Size value) { 5145ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey unparcel(); 5155ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey mMap.put(key, value); 5165ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey } 5175ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey 5185ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey /** 5195ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * Inserts a SizeF value into the mapping of this Bundle, replacing 5205ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * any existing value for the given key. Either key or value may be null. 5215ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * 5225ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * @param key a String, or null 5235ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * @param value a SizeF object, or null 5245ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey */ 525c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putSizeF(@Nullable String key, @Nullable SizeF value) { 5265ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey unparcel(); 5275ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey mMap.put(key, value); 5285ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey } 5295ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey 5305ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey /** 5319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts an array of Parcelable values into the mapping of this Bundle, 5329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * replacing any existing value for the given key. Either key or value may 5339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * be null. 5349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value an array of Parcelable objects, or null 5379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 538c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putParcelableArray(@Nullable String key, @Nullable Parcelable[] value) { 5399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 5409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMap.put(key, value); 541d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags &= ~FLAG_HAS_FDS_KNOWN; 5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a List of Parcelable values into the mapping of this Bundle, 5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * replacing any existing value for the given key. Either key or value may 5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * be null. 5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value an ArrayList of Parcelable objects, or null 5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 552c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putParcelableArrayList(@Nullable String key, 553c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable ArrayList<? extends Parcelable> value) { 5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMap.put(key, value); 556d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags &= ~FLAG_HAS_FDS_KNOWN; 5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 559aeb16e2435f9975b9fa1fc4b747796647a21292eJeff Sharkey /** {@hide} */ 560aeb16e2435f9975b9fa1fc4b747796647a21292eJeff Sharkey public void putParcelableList(String key, List<? extends Parcelable> value) { 561aeb16e2435f9975b9fa1fc4b747796647a21292eJeff Sharkey unparcel(); 562aeb16e2435f9975b9fa1fc4b747796647a21292eJeff Sharkey mMap.put(key, value); 563d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags &= ~FLAG_HAS_FDS_KNOWN; 564aeb16e2435f9975b9fa1fc4b747796647a21292eJeff Sharkey } 565aeb16e2435f9975b9fa1fc4b747796647a21292eJeff Sharkey 5669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a SparceArray of Parcelable values into the mapping of this 5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Bundle, replacing any existing value for the given key. Either key 5699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or value may be null. 5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a SparseArray of Parcelable objects, or null 5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 574c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putSparseParcelableArray(@Nullable String key, 575c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable SparseArray<? extends Parcelable> value) { 5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMap.put(key, value); 578d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey mFlags &= ~FLAG_HAS_FDS_KNOWN; 5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts an ArrayList<Integer> value into the mapping of this Bundle, replacing 5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 5869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value an ArrayList<Integer> object, or null 5879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 588719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 589c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putIntegerArrayList(@Nullable String key, @Nullable ArrayList<Integer> value) { 590719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putIntegerArrayList(key, value); 5919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts an ArrayList<String> value into the mapping of this Bundle, replacing 5959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 5969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 5989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value an ArrayList<String> object, or null 5999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 600719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 601c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putStringArrayList(@Nullable String key, @Nullable ArrayList<String> value) { 602719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putStringArrayList(key, value); 6039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 60608bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * Inserts an ArrayList<CharSequence> value into the mapping of this Bundle, replacing 60708bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * any existing value for the given key. Either key or value may be null. 60808bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * 60908bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * @param key a String, or null 61008bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * @param value an ArrayList<CharSequence> object, or null 61108bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert */ 612719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 613c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putCharSequenceArrayList(@Nullable String key, 614c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable ArrayList<CharSequence> value) { 615719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putCharSequenceArrayList(key, value); 61608bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert } 61708bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert 61808bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert /** 6199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a Serializable value into the mapping of this Bundle, replacing 6209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 6219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 6239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a Serializable object, or null 6249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 625719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 626c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putSerializable(@Nullable String key, @Nullable Serializable value) { 627719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putSerializable(key, value); 6289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a byte array value into the mapping of this Bundle, replacing 6329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 6339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 6359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a byte array object, or null 6369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 637719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 638c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putByteArray(@Nullable String key, @Nullable byte[] value) { 639719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putByteArray(key, value); 6409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a short array value into the mapping of this Bundle, replacing 6449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 6459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 6479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a short array object, or null 6489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 649719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 650c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putShortArray(@Nullable String key, @Nullable short[] value) { 651719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putShortArray(key, value); 6529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a char array value into the mapping of this Bundle, replacing 6569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 6579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 6599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a char array object, or null 6609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 661719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 662c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putCharArray(@Nullable String key, @Nullable char[] value) { 663719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putCharArray(key, value); 6649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a float array value into the mapping of this Bundle, replacing 6689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 6699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 6719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a float array object, or null 6729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 673719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 674c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putFloatArray(@Nullable String key, @Nullable float[] value) { 675719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putFloatArray(key, value); 6769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 67908bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * Inserts a CharSequence array value into the mapping of this Bundle, replacing 68008bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * any existing value for the given key. Either key or value may be null. 68108bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * 68208bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * @param key a String, or null 68308bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * @param value a CharSequence array object, or null 68408bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert */ 685719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 686c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putCharSequenceArray(@Nullable String key, @Nullable CharSequence[] value) { 687719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.putCharSequenceArray(key, value); 68808bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert } 68908bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert 69008bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert /** 6919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts a Bundle value into the mapping of this Bundle, replacing 6929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 6939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 6959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value a Bundle object, or null 6969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 697c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putBundle(@Nullable String key, @Nullable Bundle value) { 6989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 6999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMap.put(key, value); 7009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7033cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * Inserts an {@link IBinder} value into the mapping of this Bundle, replacing 7043cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * any existing value for the given key. Either key or value may be null. 7053cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * 7063cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * <p class="note">You should be very careful when using this function. In many 7073cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * places where Bundles are used (such as inside of Intent objects), the Bundle 7083cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * can live longer inside of another process than the process that had originally 7093cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * created it. In that case, the IBinder you supply here will become invalid 7103cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * when your process goes away, and no longer usable, even if a new process is 7113cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * created for you later on.</p> 7123cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * 7133cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * @param key a String, or null 7143cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * @param value an IBinder object, or null 7153cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn */ 716c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putBinder(@Nullable String key, @Nullable IBinder value) { 7173cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn unparcel(); 7183cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn mMap.put(key, value); 7193cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn } 7203cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn 7213cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn /** 7229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Inserts an IBinder value into the mapping of this Bundle, replacing 7239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any existing value for the given key. Either key or value may be null. 7249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 7269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param value an IBinder object, or null 7279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated 7293cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * @hide This is the old name of the function. 7309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 732c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putIBinder(@Nullable String key, @Nullable IBinder value) { 7339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 7349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mMap.put(key, value); 7359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or (byte) 0 if 7399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key. 7409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String 7429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a byte value 7439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 744719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 7459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public byte getByte(String key) { 746719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getByte(key); 7479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or defaultValue if 7519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key. 7529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String 7549f6cb87522d395eacd87dff1da525f4dc9809d27Nicolas Klein * @param defaultValue Value to return if key does not exist 7559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a byte value 7569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 757719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 7589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Byte getByte(String key, byte defaultValue) { 759719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getByte(key, defaultValue); 7609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7639f6cb87522d395eacd87dff1da525f4dc9809d27Nicolas Klein * Returns the value associated with the given key, or (char) 0 if 7649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key. 7659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String 7679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a char value 7689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 769719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 7709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public char getChar(String key) { 771719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getChar(key); 7729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7759f6cb87522d395eacd87dff1da525f4dc9809d27Nicolas Klein * Returns the value associated with the given key, or defaultValue if 7769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key. 7779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String 7799f6cb87522d395eacd87dff1da525f4dc9809d27Nicolas Klein * @param defaultValue Value to return if key does not exist 7809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a char value 7819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 782719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 7839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public char getChar(String key, char defaultValue) { 784719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getChar(key, defaultValue); 7859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or (short) 0 if 7899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key. 7909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String 7929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a short value 7939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 794719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 7959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public short getShort(String key) { 796719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getShort(key); 7979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or defaultValue if 8019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key. 8029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String 8049f6cb87522d395eacd87dff1da525f4dc9809d27Nicolas Klein * @param defaultValue Value to return if key does not exist 8059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a short value 8069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 807719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 8089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public short getShort(String key, short defaultValue) { 809719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getShort(key, defaultValue); 8109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or 0.0f if 8149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key. 8159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String 8179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a float value 8189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 819719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 8209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public float getFloat(String key) { 821719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getFloat(key); 8229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or defaultValue if 8269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key. 8279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String 8299f6cb87522d395eacd87dff1da525f4dc9809d27Nicolas Klein * @param defaultValue Value to return if key does not exist 8309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a float value 8319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 832719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 8339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public float getFloat(String key, float defaultValue) { 834719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getFloat(key, defaultValue); 8359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 8399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 8409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 8419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 8439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a CharSequence value, or null 8449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 845719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 846c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 847c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public CharSequence getCharSequence(@Nullable String key) { 848719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getCharSequence(key); 8499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 852e3a7f628c6d9fef42be24999b3137ebe5c6f3525Dianne Hackborn * Returns the value associated with the given key, or defaultValue if 853ca2197b0457b1626b95a053d835ceaca43ac0286Narayan Kamath * no mapping of the desired type exists for the given key or if a null 854ca2197b0457b1626b95a053d835ceaca43ac0286Narayan Kamath * value is explicitly associatd with the given key. 855e3a7f628c6d9fef42be24999b3137ebe5c6f3525Dianne Hackborn * 856e3a7f628c6d9fef42be24999b3137ebe5c6f3525Dianne Hackborn * @param key a String, or null 857ca2197b0457b1626b95a053d835ceaca43ac0286Narayan Kamath * @param defaultValue Value to return if key does not exist or if a null 858ca2197b0457b1626b95a053d835ceaca43ac0286Narayan Kamath * value is associated with the given key. 859116751d84f6d276f2cac7074abd9f8ba23742958Christopher Tate * @return the CharSequence value associated with the given key, or defaultValue 860116751d84f6d276f2cac7074abd9f8ba23742958Christopher Tate * if no valid CharSequence object is currently mapped to that key. 861e3a7f628c6d9fef42be24999b3137ebe5c6f3525Dianne Hackborn */ 862719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 863c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public CharSequence getCharSequence(@Nullable String key, CharSequence defaultValue) { 864719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getCharSequence(key, defaultValue); 865e3a7f628c6d9fef42be24999b3137ebe5c6f3525Dianne Hackborn } 866e3a7f628c6d9fef42be24999b3137ebe5c6f3525Dianne Hackborn 867e3a7f628c6d9fef42be24999b3137ebe5c6f3525Dianne Hackborn /** 8689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 8699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 8709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 8719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 8735ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * @return a Size value, or null 8745ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey */ 875c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 876c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public Size getSize(@Nullable String key) { 8775ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey unparcel(); 8785ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey final Object o = mMap.get(key); 8795ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey try { 8805ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey return (Size) o; 8815ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey } catch (ClassCastException e) { 8825ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey typeWarning(key, o, "Size", e); 8835ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey return null; 8845ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey } 8855ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey } 8865ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey 8875ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey /** 8885ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * Returns the value associated with the given key, or null if 8895ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * no mapping of the desired type exists for the given key or a null 8905ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * value is explicitly associated with the key. 8915ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * 8925ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * @param key a String, or null 8935ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * @return a Size value, or null 8945ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey */ 895c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 896c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public SizeF getSizeF(@Nullable String key) { 8975ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey unparcel(); 8985ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey final Object o = mMap.get(key); 8995ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey try { 9005ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey return (SizeF) o; 9015ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey } catch (ClassCastException e) { 9025ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey typeWarning(key, o, "SizeF", e); 9035ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey return null; 9045ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey } 9055ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey } 9065ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey 9075ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey /** 9085ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * Returns the value associated with the given key, or null if 9095ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * no mapping of the desired type exists for the given key or a null 9105ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * value is explicitly associated with the key. 9115ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * 9125ef33984d0cc50bf4654b0d8e9557ac34d44fdddJeff Sharkey * @param key a String, or null 9139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a Bundle value, or null 9149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 915c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 916c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public Bundle getBundle(@Nullable String key) { 9179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 9189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object o = mMap.get(key); 9199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (o == null) { 9209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 9219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 9239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (Bundle) o; 9249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (ClassCastException e) { 9259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project typeWarning(key, o, "Bundle", e); 9269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 9279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 9319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 9329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 9339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 9349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 9369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a Parcelable value, or null 9379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 938c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 939c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public <T extends Parcelable> T getParcelable(@Nullable String key) { 9409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 9419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object o = mMap.get(key); 9429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (o == null) { 9439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 9449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 9469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (T) o; 9479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (ClassCastException e) { 9489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project typeWarning(key, o, "Parcelable", e); 9499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 9509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 9549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 9559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 9569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 9579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 9599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a Parcelable[] value, or null 9609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 961c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 962c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public Parcelable[] getParcelableArray(@Nullable String key) { 9639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 9649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object o = mMap.get(key); 9659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (o == null) { 9669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 9679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 9699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (Parcelable[]) o; 9709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (ClassCastException e) { 9719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project typeWarning(key, o, "Parcelable[]", e); 9729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 9739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 9779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 9789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 9799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 9809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 9829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return an ArrayList<T> value, or null 9839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 984c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 985c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public <T extends Parcelable> ArrayList<T> getParcelableArrayList(@Nullable String key) { 9869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 9879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object o = mMap.get(key); 9889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (o == null) { 9899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 9909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 9929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (ArrayList<T>) o; 9939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (ClassCastException e) { 9949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project typeWarning(key, o, "ArrayList", e); 9959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 9969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 10019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 10029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 10039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 10049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 10059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 10069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a SparseArray of T values, or null 10079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1008c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1009c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public <T extends Parcelable> SparseArray<T> getSparseParcelableArray(@Nullable String key) { 10109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 10119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object o = mMap.get(key); 10129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (o == null) { 10139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 10149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 10169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (SparseArray<T>) o; 10179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (ClassCastException e) { 10189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project typeWarning(key, o, "SparseArray", e); 10199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 10209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 10259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 10269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 10279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 10289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 10299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a Serializable value, or null 10309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1031719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1032c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1033c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public Serializable getSerializable(@Nullable String key) { 1034719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getSerializable(key); 10359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 10399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 10409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 10419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 10429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 10439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return an ArrayList<String> value, or null 10449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1045719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1046c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1047c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public ArrayList<Integer> getIntegerArrayList(@Nullable String key) { 1048719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getIntegerArrayList(key); 10499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 10539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 10549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 10559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 10569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 10579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return an ArrayList<String> value, or null 10589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1059719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1060c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1061c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public ArrayList<String> getStringArrayList(@Nullable String key) { 1062719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getStringArrayList(key); 10639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 10679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 10689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 10699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 10709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 107108bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * @return an ArrayList<CharSequence> value, or null 107208bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert */ 1073719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1074c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1075c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public ArrayList<CharSequence> getCharSequenceArrayList(@Nullable String key) { 1076719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getCharSequenceArrayList(key); 107708bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert } 107808bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert 107908bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert /** 108008bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * Returns the value associated with the given key, or null if 108108bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * no mapping of the desired type exists for the given key or a null 10829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 10839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 10849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 10859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a byte[] value, or null 10869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1087719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1088c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1089c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public byte[] getByteArray(@Nullable String key) { 1090719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getByteArray(key); 10919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 10949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 10959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 10969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 10979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 10989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 10999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a short[] value, or null 11009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1101719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1102c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1103c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public short[] getShortArray(@Nullable String key) { 1104719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getShortArray(key); 11059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 11089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 11099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 11109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 11119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 11129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 11139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a char[] value, or null 11149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1115719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1116c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1117c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public char[] getCharArray(@Nullable String key) { 1118719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getCharArray(key); 11199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 11229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 11239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 11249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 11259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 11269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 11279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a float[] value, or null 11289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1129719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1130c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1131c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public float[] getFloatArray(@Nullable String key) { 1132719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getFloatArray(key); 11339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 11369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value associated with the given key, or null if 11379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * no mapping of the desired type exists for the given key or a null 11389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value is explicitly associated with the key. 11399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 11409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param key a String, or null 114108bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * @return a CharSequence[] value, or null 114208bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert */ 1143719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 1144c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1145c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public CharSequence[] getCharSequenceArray(@Nullable String key) { 1146719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return super.getCharSequenceArray(key); 114708bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert } 114808bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert 114908bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert /** 115008bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * Returns the value associated with the given key, or null if 115108bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * no mapping of the desired type exists for the given key or a null 115208bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * value is explicitly associated with the key. 115308bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * 115408bbffb049c135c5dfd40d261118c90d1a6dc111Bjorn Bringert * @param key a String, or null 11559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return an IBinder value, or null 11563cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn */ 1157c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1158c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public IBinder getBinder(@Nullable String key) { 11593cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn unparcel(); 11603cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn Object o = mMap.get(key); 11613cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn if (o == null) { 11623cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn return null; 11633cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn } 11643cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn try { 11653cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn return (IBinder) o; 11663cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn } catch (ClassCastException e) { 11673cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn typeWarning(key, o, "IBinder", e); 11683cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn return null; 11693cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn } 11703cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn } 11713cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn 11723cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn /** 11733cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * Returns the value associated with the given key, or null if 11743cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * no mapping of the desired type exists for the given key or a null 11753cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * value is explicitly associated with the key. 11763cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * 11773cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * @param key a String, or null 11783cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * @return an IBinder value, or null 11799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 11809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated 11813cbdddbd5ce6f52688d88f120c1e5214ed6afbdaDianne Hackborn * @hide This is the old name of the function. 11829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 11839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 1184c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1185c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public IBinder getIBinder(@Nullable String key) { 11869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project unparcel(); 11879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Object o = mMap.get(key); 11889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (o == null) { 11899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 11909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 11929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (IBinder) o; 11939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (ClassCastException e) { 11949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project typeWarning(key, o, "IBinder", e); 11959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 11969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Parcelable.Creator<Bundle> CREATOR = 12009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new Parcelable.Creator<Bundle>() { 1201719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 12029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Bundle createFromParcel(Parcel in) { 12039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return in.readBundle(); 12049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1206719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 12079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Bundle[] newArray(int size) { 12089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new Bundle[size]; 12099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 12119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 12139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Report the nature of this Parcelable's contents 12149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1215719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 12169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 12179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int mask = 0; 12189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (hasFileDescriptors()) { 12199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mask |= Parcelable.CONTENTS_FILE_DESCRIPTOR; 12209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mask; 12229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1223719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 12249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 12259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Writes the Bundle contents to a Parcel, typically in order for 12269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * it to be passed through an IBinder connection. 12279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param parcel The parcel to copy this bundle to. 12289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1229719e6b167041ffaffc2245f692714c8de191863fCraig Mautner @Override 12309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel parcel, int flags) { 1231d136e51a99df5275eaafdde407e89e78c02b829bJeff Sharkey final boolean oldAllowFds = parcel.pushAllowFds((mFlags & FLAG_ALLOW_FDS) != 0); 12329ecebbfbf768fd63e9a6c9a09c86d81c7737ee2dDianne Hackborn try { 1233719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.writeToParcelInner(parcel, flags); 12349ecebbfbf768fd63e9a6c9a09c86d81c7737ee2dDianne Hackborn } finally { 1235c04db7e06737c5b9bae276ac462858d44002672eDianne Hackborn parcel.restoreAllowFds(oldAllowFds); 12366aff905048ba3b03724f17e2aba9089872e14cd2Dianne Hackborn } 12379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 12409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Reads the Parcel contents into this Bundle, typically in order for 12419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * it to be passed through an IBinder connection. 12429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param parcel The parcel to overwrite this bundle from. 12439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 12449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void readFromParcel(Parcel parcel) { 1245719e6b167041ffaffc2245f692714c8de191863fCraig Mautner super.readFromParcelInner(parcel); 12464501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki mFlags = FLAG_ALLOW_FDS; 12474501c61d65f0590bdc4e6a8a6f3a1b0cf2165b9fMakoto Onuki maybePrefillHasFds(); 12489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 12519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public synchronized String toString() { 12529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mParcelledData != null) { 125352764cba5968888180ceedf717d85e08ffd747ccAndreas Gampe if (isEmptyParcel()) { 12548aee64d18b6b90e46e886a80d8de0467d682ddc4Dianne Hackborn return "Bundle[EMPTY_PARCEL]"; 12558aee64d18b6b90e46e886a80d8de0467d682ddc4Dianne Hackborn } else { 12568aee64d18b6b90e46e886a80d8de0467d682ddc4Dianne Hackborn return "Bundle[mParcelledData.dataSize=" + 12578aee64d18b6b90e46e886a80d8de0467d682ddc4Dianne Hackborn mParcelledData.dataSize() + "]"; 12588aee64d18b6b90e46e886a80d8de0467d682ddc4Dianne Hackborn } 12599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "Bundle[" + mMap.toString() + "]"; 12619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1262a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn 1263a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn /** 1264a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn * @hide 1265a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn */ 1266a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn public synchronized String toShortString() { 1267a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn if (mParcelledData != null) { 1268a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn if (isEmptyParcel()) { 1269a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn return "EMPTY_PARCEL"; 1270a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn } else { 1271a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn return "mParcelledData.dataSize=" + mParcelledData.dataSize(); 1272a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn } 1273a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn } 1274a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn return mMap.toString(); 1275a47223f99b6b7ade4ae909c458d975eb487062b3Dianne Hackborn } 127685f2fbcb1fc3277ea825ec3dc52f636b47302425Kweku Adams 127785f2fbcb1fc3277ea825ec3dc52f636b47302425Kweku Adams /** @hide */ 127885f2fbcb1fc3277ea825ec3dc52f636b47302425Kweku Adams public void writeToProto(ProtoOutputStream proto, long fieldId) { 127985f2fbcb1fc3277ea825ec3dc52f636b47302425Kweku Adams final long token = proto.start(fieldId); 128085f2fbcb1fc3277ea825ec3dc52f636b47302425Kweku Adams 128185f2fbcb1fc3277ea825ec3dc52f636b47302425Kweku Adams if (mParcelledData != null) { 128285f2fbcb1fc3277ea825ec3dc52f636b47302425Kweku Adams if (isEmptyParcel()) { 128385f2fbcb1fc3277ea825ec3dc52f636b47302425Kweku Adams proto.write(BundleProto.PARCELLED_DATA_SIZE, 0); 128485f2fbcb1fc3277ea825ec3dc52f636b47302425Kweku Adams } else { 128585f2fbcb1fc3277ea825ec3dc52f636b47302425Kweku Adams proto.write(BundleProto.PARCELLED_DATA_SIZE, mParcelledData.dataSize()); 128685f2fbcb1fc3277ea825ec3dc52f636b47302425Kweku Adams } 128785f2fbcb1fc3277ea825ec3dc52f636b47302425Kweku Adams } else { 128885f2fbcb1fc3277ea825ec3dc52f636b47302425Kweku Adams proto.write(BundleProto.MAP_DATA, mMap.toString()); 128985f2fbcb1fc3277ea825ec3dc52f636b47302425Kweku Adams } 129085f2fbcb1fc3277ea825ec3dc52f636b47302425Kweku Adams 129185f2fbcb1fc3277ea825ec3dc52f636b47302425Kweku Adams proto.end(token); 129285f2fbcb1fc3277ea825ec3dc52f636b47302425Kweku Adams } 12939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1294