1719e6b167041ffaffc2245f692714c8de191863fCraig Mautner/* 2719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Copyright (C) 2014 The Android Open Source Project 3719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 4719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Licensed under the Apache License, Version 2.0 (the "License"); 5719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * you may not use this file except in compliance with the License. 6719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * You may obtain a copy of the License at 7719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 8719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * http://www.apache.org/licenses/LICENSE-2.0 9719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 10719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Unless required by applicable law or agreed to in writing, software 11719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * distributed under the License is distributed on an "AS IS" BASIS, 12719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * See the License for the specific language governing permissions and 14719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * limitations under the License. 15719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 16719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 17719e6b167041ffaffc2245f692714c8de191863fCraig Mautnerpackage android.os; 18719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 19719e6b167041ffaffc2245f692714c8de191863fCraig Mautnerimport android.util.ArrayMap; 20719e6b167041ffaffc2245f692714c8de191863fCraig Mautnerimport android.util.Log; 21719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 22719e6b167041ffaffc2245f692714c8de191863fCraig Mautnerimport java.io.Serializable; 23719e6b167041ffaffc2245f692714c8de191863fCraig Mautnerimport java.util.ArrayList; 2421d24a21ea4aaadd78e73de54168e8a8a8973e4dCraig Mautnerimport java.util.Map; 25719e6b167041ffaffc2245f692714c8de191863fCraig Mautnerimport java.util.Set; 26719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 27719e6b167041ffaffc2245f692714c8de191863fCraig Mautner/** 28719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * A mapping from String values to various types. 29719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 300a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautnerpublic class BaseBundle { 31719e6b167041ffaffc2245f692714c8de191863fCraig Mautner private static final String TAG = "Bundle"; 32719e6b167041ffaffc2245f692714c8de191863fCraig Mautner static final boolean DEBUG = false; 33719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 34719e6b167041ffaffc2245f692714c8de191863fCraig Mautner static final int BUNDLE_MAGIC = 0x4C444E42; // 'B' 'N' 'D' 'L' 35719e6b167041ffaffc2245f692714c8de191863fCraig Mautner static final Parcel EMPTY_PARCEL; 36719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 37719e6b167041ffaffc2245f692714c8de191863fCraig Mautner static { 38719e6b167041ffaffc2245f692714c8de191863fCraig Mautner EMPTY_PARCEL = Parcel.obtain(); 39719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 40719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 41719e6b167041ffaffc2245f692714c8de191863fCraig Mautner // Invariant - exactly one of mMap / mParcelledData will be null 42719e6b167041ffaffc2245f692714c8de191863fCraig Mautner // (except inside a call to unparcel) 43719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 44719e6b167041ffaffc2245f692714c8de191863fCraig Mautner ArrayMap<String, Object> mMap = null; 45719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 46719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /* 47719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * If mParcelledData is non-null, then mMap will be null and the 48719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * data are stored as a Parcel containing a Bundle. When the data 49719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * are unparcelled, mParcelledData willbe set to null. 50719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 51719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Parcel mParcelledData = null; 52719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 53719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 54719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * The ClassLoader used when unparcelling data from mParcelledData. 55719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 56719e6b167041ffaffc2245f692714c8de191863fCraig Mautner private ClassLoader mClassLoader; 57719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 58719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 59719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Constructs a new, empty Bundle that uses a specific ClassLoader for 60719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * instantiating Parcelable and Serializable objects. 61719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 62719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param loader An explicit ClassLoader to use when instantiating objects 63719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * inside of the Bundle. 64719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param capacity Initial size of the ArrayMap. 65719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 660a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner BaseBundle(ClassLoader loader, int capacity) { 67719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap = capacity > 0 ? 68719e6b167041ffaffc2245f692714c8de191863fCraig Mautner new ArrayMap<String, Object>(capacity) : new ArrayMap<String, Object>(); 69719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mClassLoader = loader == null ? getClass().getClassLoader() : loader; 70719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 71719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 72719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 73719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Constructs a new, empty Bundle. 74719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 750a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner BaseBundle() { 76719e6b167041ffaffc2245f692714c8de191863fCraig Mautner this((ClassLoader) null, 0); 77719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 78719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 79719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 80719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Constructs a Bundle whose data is stored as a Parcel. The data 81719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * will be unparcelled on first contact, using the assigned ClassLoader. 82719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 83719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param parcelledData a Parcel containing a Bundle 84719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 850a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner BaseBundle(Parcel parcelledData) { 86719e6b167041ffaffc2245f692714c8de191863fCraig Mautner readFromParcelInner(parcelledData); 87719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 88719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 890a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner BaseBundle(Parcel parcelledData, int length) { 90719e6b167041ffaffc2245f692714c8de191863fCraig Mautner readFromParcelInner(parcelledData, length); 91719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 92719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 93719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 94719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Constructs a new, empty Bundle that uses a specific ClassLoader for 95719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * instantiating Parcelable and Serializable objects. 96719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 97719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param loader An explicit ClassLoader to use when instantiating objects 98719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * inside of the Bundle. 99719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1000a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner BaseBundle(ClassLoader loader) { 101719e6b167041ffaffc2245f692714c8de191863fCraig Mautner this(loader, 0); 102719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 103719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 104719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 105719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Constructs a new, empty Bundle sized to hold the given number of 106719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * elements. The Bundle will grow as needed. 107719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 108719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param capacity the initial capacity of the Bundle 109719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1100a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner BaseBundle(int capacity) { 111719e6b167041ffaffc2245f692714c8de191863fCraig Mautner this((ClassLoader) null, capacity); 112719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 113719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 114719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 115719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Constructs a Bundle containing a copy of the mappings from the given 116719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Bundle. 117719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 118719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param b a Bundle to be copied. 119719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1200a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner BaseBundle(BaseBundle b) { 121719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (b.mParcelledData != null) { 122719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (b.mParcelledData == EMPTY_PARCEL) { 123719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mParcelledData = EMPTY_PARCEL; 124719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } else { 125719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mParcelledData = Parcel.obtain(); 126719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mParcelledData.appendFrom(b.mParcelledData, 0, b.mParcelledData.dataSize()); 127719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mParcelledData.setDataPosition(0); 128719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 129719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } else { 130719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mParcelledData = null; 131719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 132719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 133719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (b.mMap != null) { 134719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap = new ArrayMap<String, Object>(b.mMap); 135719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } else { 136719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap = null; 137719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 138719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 139719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mClassLoader = b.mClassLoader; 140719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 141719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 142719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 143719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * TODO: optimize this later (getting just the value part of a Bundle 144719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * with a single pair) once Bundle.forPair() above is implemented 145719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * with a special single-value Map implementation/serialization. 146719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 147719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Note: value in single-pair Bundle may be null. 148719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 149719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @hide 150719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1510a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public String getPairValue() { 152719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 153719e6b167041ffaffc2245f692714c8de191863fCraig Mautner int size = mMap.size(); 154719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (size > 1) { 155719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Log.w(TAG, "getPairValue() used on Bundle with multiple pairs."); 156719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 157719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (size == 0) { 158719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 159719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 160719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.valueAt(0); 161719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 162719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (String) o; 163719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 164719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning("getPairValue()", o, "String", e); 165719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 166719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 167719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 168719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 169719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 170719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Changes the ClassLoader this Bundle uses when instantiating objects. 171719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 172719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param loader An explicit ClassLoader to use when instantiating objects 173719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * inside of the Bundle. 174719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 175719e6b167041ffaffc2245f692714c8de191863fCraig Mautner void setClassLoader(ClassLoader loader) { 176719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mClassLoader = loader; 177719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 178719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 179719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 180719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Return the ClassLoader currently associated with this Bundle. 181719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 182719e6b167041ffaffc2245f692714c8de191863fCraig Mautner ClassLoader getClassLoader() { 183719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return mClassLoader; 184719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 185719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 186719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 187719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * If the underlying data are stored as a Parcel, unparcel them 188719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * using the currently assigned class loader. 189719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 190719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /* package */ synchronized void unparcel() { 191719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (mParcelledData == null) { 192719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (DEBUG) Log.d(TAG, "unparcel " + Integer.toHexString(System.identityHashCode(this)) 193719e6b167041ffaffc2245f692714c8de191863fCraig Mautner + ": no parcelled data"); 194719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return; 195719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 196719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 197719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (mParcelledData == EMPTY_PARCEL) { 198719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (DEBUG) Log.d(TAG, "unparcel " + Integer.toHexString(System.identityHashCode(this)) 199719e6b167041ffaffc2245f692714c8de191863fCraig Mautner + ": empty"); 200719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (mMap == null) { 201719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap = new ArrayMap<String, Object>(1); 202719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } else { 203719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.erase(); 204719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 205719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mParcelledData = null; 206719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return; 207719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 208719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 209719e6b167041ffaffc2245f692714c8de191863fCraig Mautner int N = mParcelledData.readInt(); 210719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (DEBUG) Log.d(TAG, "unparcel " + Integer.toHexString(System.identityHashCode(this)) 211719e6b167041ffaffc2245f692714c8de191863fCraig Mautner + ": reading " + N + " maps"); 212719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (N < 0) { 213719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return; 214719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 215719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (mMap == null) { 216719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap = new ArrayMap<String, Object>(N); 217719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } else { 218719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.erase(); 219719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.ensureCapacity(N); 220719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 221719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mParcelledData.readArrayMapInternal(mMap, N, mClassLoader); 222719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mParcelledData.recycle(); 223719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mParcelledData = null; 224719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (DEBUG) Log.d(TAG, "unparcel " + Integer.toHexString(System.identityHashCode(this)) 225719e6b167041ffaffc2245f692714c8de191863fCraig Mautner + " final map: " + mMap); 226719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 227719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 228719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 229719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @hide 230719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 2310a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public boolean isParcelled() { 232719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return mParcelledData != null; 233719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 234719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 235719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 236719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the number of mappings contained in this Bundle. 237719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 238719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return the number of mappings as an int. 239719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 2400a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public int size() { 241719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 242719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return mMap.size(); 243719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 244719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 245719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 246719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns true if the mapping of this Bundle is empty, false otherwise. 247719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 2480a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public boolean isEmpty() { 249719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 250719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return mMap.isEmpty(); 251719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 252719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 253719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 254719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Removes all elements from the mapping of this Bundle. 255719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 2560a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public void clear() { 257719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 258719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.clear(); 259719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 260719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 261719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 262719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns true if the given key is contained in the mapping 263719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * of this Bundle. 264719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 265719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String key 266719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return true if the key is part of the mapping, false otherwise 267719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 2680a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public boolean containsKey(String key) { 269719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 270719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return mMap.containsKey(key); 271719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 272719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 273719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 274719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the entry with the given key as an object. 275719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 276719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String key 277719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return an Object, or null 278719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 2790a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public Object get(String key) { 280719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 281719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return mMap.get(key); 282719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 283719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 284719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 285719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Removes any entry with the given key from the mapping of this Bundle. 286719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 287719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String key 288719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 2890a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public void remove(String key) { 290719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 291719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.remove(key); 292719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 293719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 294719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 2950a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner * Inserts all mappings from the given PersistableBundle into this BaseBundle. 296719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 297719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param bundle a PersistableBundle 298719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 2990a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public void putAll(PersistableBundle bundle) { 300719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 301719e6b167041ffaffc2245f692714c8de191863fCraig Mautner bundle.unparcel(); 302719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.putAll(bundle.mMap); 303719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 304719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 305719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 3060a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner * Inserts all mappings from the given Map into this BaseBundle. 30721d24a21ea4aaadd78e73de54168e8a8a8973e4dCraig Mautner * 30821d24a21ea4aaadd78e73de54168e8a8a8973e4dCraig Mautner * @param map a Map 30921d24a21ea4aaadd78e73de54168e8a8a8973e4dCraig Mautner */ 31021d24a21ea4aaadd78e73de54168e8a8a8973e4dCraig Mautner void putAll(Map map) { 31121d24a21ea4aaadd78e73de54168e8a8a8973e4dCraig Mautner unparcel(); 31221d24a21ea4aaadd78e73de54168e8a8a8973e4dCraig Mautner mMap.putAll(map); 31321d24a21ea4aaadd78e73de54168e8a8a8973e4dCraig Mautner } 31421d24a21ea4aaadd78e73de54168e8a8a8973e4dCraig Mautner 31521d24a21ea4aaadd78e73de54168e8a8a8973e4dCraig Mautner /** 316719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns a Set containing the Strings used as keys in this Bundle. 317719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 318719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a Set of String keys 319719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 3200a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public Set<String> keySet() { 321719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 322719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return mMap.keySet(); 323719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 324719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 325719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 326719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a Boolean value into the mapping of this Bundle, replacing 327719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 328719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 329719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 330719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a Boolean, or null 331719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 33273bdf9761be2abdd85efc5fce165f3fa80fcfa65Craig Mautner public void putBoolean(String key, boolean value) { 333719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 334719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 335719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 336719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 337719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 338719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a byte value into the mapping of this Bundle, replacing 339719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. 340719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 341719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 342719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a byte 343719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 344719e6b167041ffaffc2245f692714c8de191863fCraig Mautner void putByte(String key, byte value) { 345719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 346719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 347719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 348719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 349719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 350719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a char value into the mapping of this Bundle, replacing 351719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. 352719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 353719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 354719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a char, or null 355719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 356719e6b167041ffaffc2245f692714c8de191863fCraig Mautner void putChar(String key, char value) { 357719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 358719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 359719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 360719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 361719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 362719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a short value into the mapping of this Bundle, replacing 363719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. 364719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 365719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 366719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a short 367719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 368719e6b167041ffaffc2245f692714c8de191863fCraig Mautner void putShort(String key, short value) { 369719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 370719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 371719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 372719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 373719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 374719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts an int value into the mapping of this Bundle, replacing 375719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. 376719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 377719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 378719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value an int, or null 379719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 3800a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public void putInt(String key, int value) { 381719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 382719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 383719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 384719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 385719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 386719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a long value into the mapping of this Bundle, replacing 387719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. 388719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 389719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 390719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a long 391719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 3920a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public void putLong(String key, long value) { 393719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 394719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 395719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 396719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 397719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 398719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a float value into the mapping of this Bundle, replacing 399719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. 400719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 401719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 402719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a float 403719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 404719e6b167041ffaffc2245f692714c8de191863fCraig Mautner void putFloat(String key, float value) { 405719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 406719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 407719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 408719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 409719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 410719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a double value into the mapping of this Bundle, replacing 411719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. 412719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 413719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 414719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a double 415719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 4160a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public void putDouble(String key, double value) { 417719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 418719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 419719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 420719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 421719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 422719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a String value into the mapping of this Bundle, replacing 423719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 424719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 425719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 426719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a String, or null 427719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 4280a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public void putString(String key, String value) { 429719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 430719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 431719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 432719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 433719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 434719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a CharSequence value into the mapping of this Bundle, replacing 435719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 436719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 437719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 438719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a CharSequence, or null 439719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 440719e6b167041ffaffc2245f692714c8de191863fCraig Mautner void putCharSequence(String key, CharSequence value) { 441719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 442719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 443719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 444719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 445719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 446719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts an ArrayList<Integer> value into the mapping of this Bundle, replacing 447719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 448719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 449719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 450719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value an ArrayList<Integer> object, or null 451719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 452719e6b167041ffaffc2245f692714c8de191863fCraig Mautner void putIntegerArrayList(String key, ArrayList<Integer> value) { 453719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 454719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 455719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 456719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 457719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 458719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts an ArrayList<String> value into the mapping of this Bundle, replacing 459719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 460719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 461719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 462719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value an ArrayList<String> object, or null 463719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 464719e6b167041ffaffc2245f692714c8de191863fCraig Mautner void putStringArrayList(String key, ArrayList<String> value) { 465719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 466719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 467719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 468719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 469719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 470719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts an ArrayList<CharSequence> value into the mapping of this Bundle, replacing 471719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 472719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 473719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 474719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value an ArrayList<CharSequence> object, or null 475719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 476719e6b167041ffaffc2245f692714c8de191863fCraig Mautner void putCharSequenceArrayList(String key, ArrayList<CharSequence> value) { 477719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 478719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 479719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 480719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 481719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 482719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a Serializable value into the mapping of this Bundle, replacing 483719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 484719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 485719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 486719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a Serializable object, or null 487719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 488719e6b167041ffaffc2245f692714c8de191863fCraig Mautner void putSerializable(String key, Serializable value) { 489719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 490719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 491719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 492719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 493719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 494719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a boolean array value into the mapping of this Bundle, replacing 495719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 496719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 497719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 498719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a boolean array object, or null 499719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 50073bdf9761be2abdd85efc5fce165f3fa80fcfa65Craig Mautner public void putBooleanArray(String key, boolean[] value) { 501719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 502719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 503719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 504719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 505719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 506719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a byte array value into the mapping of this Bundle, replacing 507719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 508719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 509719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 510719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a byte array object, or null 511719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 512719e6b167041ffaffc2245f692714c8de191863fCraig Mautner void putByteArray(String key, byte[] value) { 513719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 514719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 515719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 516719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 517719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 518719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a short array value into the mapping of this Bundle, replacing 519719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 520719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 521719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 522719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a short array object, or null 523719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 524719e6b167041ffaffc2245f692714c8de191863fCraig Mautner void putShortArray(String key, short[] value) { 525719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 526719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 527719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 528719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 529719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 530719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a char array value into the mapping of this Bundle, replacing 531719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 532719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 533719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 534719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a char array object, or null 535719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 536719e6b167041ffaffc2245f692714c8de191863fCraig Mautner void putCharArray(String key, char[] value) { 537719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 538719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 539719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 540719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 541719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 542719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts an int array value into the mapping of this Bundle, replacing 543719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 544719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 545719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 546719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value an int array object, or null 547719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 5480a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public void putIntArray(String key, int[] value) { 549719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 550719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 551719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 552719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 553719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 554719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a long array value into the mapping of this Bundle, replacing 555719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 556719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 557719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 558719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a long array object, or null 559719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 5600a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public void putLongArray(String key, long[] value) { 561719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 562719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 563719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 564719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 565719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 566719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a float array value into the mapping of this Bundle, replacing 567719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 568719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 569719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 570719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a float array object, or null 571719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 572719e6b167041ffaffc2245f692714c8de191863fCraig Mautner void putFloatArray(String key, float[] value) { 573719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 574719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 575719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 576719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 577719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 578719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a double array value into the mapping of this Bundle, replacing 579719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 580719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 581719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 582719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a double array object, or null 583719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 5840a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public void putDoubleArray(String key, double[] value) { 585719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 586719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 587719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 588719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 589719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 590719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a String array value into the mapping of this Bundle, replacing 591719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 592719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 593719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 594719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a String array object, or null 595719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 5960a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public void putStringArray(String key, String[] value) { 597719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 598719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 599719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 600719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 601719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 602719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a CharSequence array value into the mapping of this Bundle, replacing 603719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 604719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 605719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 606719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a CharSequence array object, or null 607719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 608719e6b167041ffaffc2245f692714c8de191863fCraig Mautner void putCharSequenceArray(String key, CharSequence[] value) { 609719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 610719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 611719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 612719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 613719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 614719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or false if 615719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 616719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 617719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 618719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a boolean value 619719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 62073bdf9761be2abdd85efc5fce165f3fa80fcfa65Craig Mautner public boolean getBoolean(String key) { 621719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 622719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (DEBUG) Log.d(TAG, "Getting boolean in " 623719e6b167041ffaffc2245f692714c8de191863fCraig Mautner + Integer.toHexString(System.identityHashCode(this))); 624719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return getBoolean(key, false); 625719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 626719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 627719e6b167041ffaffc2245f692714c8de191863fCraig Mautner // Log a message if the value was non-null but not of the expected type 628719e6b167041ffaffc2245f692714c8de191863fCraig Mautner void typeWarning(String key, Object value, String className, 629719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object defaultValue, ClassCastException e) { 630719e6b167041ffaffc2245f692714c8de191863fCraig Mautner StringBuilder sb = new StringBuilder(); 631719e6b167041ffaffc2245f692714c8de191863fCraig Mautner sb.append("Key "); 632719e6b167041ffaffc2245f692714c8de191863fCraig Mautner sb.append(key); 633719e6b167041ffaffc2245f692714c8de191863fCraig Mautner sb.append(" expected "); 634719e6b167041ffaffc2245f692714c8de191863fCraig Mautner sb.append(className); 635719e6b167041ffaffc2245f692714c8de191863fCraig Mautner sb.append(" but value was a "); 636719e6b167041ffaffc2245f692714c8de191863fCraig Mautner sb.append(value.getClass().getName()); 637719e6b167041ffaffc2245f692714c8de191863fCraig Mautner sb.append(". The default value "); 638719e6b167041ffaffc2245f692714c8de191863fCraig Mautner sb.append(defaultValue); 639719e6b167041ffaffc2245f692714c8de191863fCraig Mautner sb.append(" was returned."); 640719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Log.w(TAG, sb.toString()); 641719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Log.w(TAG, "Attempt to cast generated internal exception:", e); 642719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 643719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 644719e6b167041ffaffc2245f692714c8de191863fCraig Mautner void typeWarning(String key, Object value, String className, 645719e6b167041ffaffc2245f692714c8de191863fCraig Mautner ClassCastException e) { 646719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, value, className, "<null>", e); 647719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 648719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 649719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 650719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or defaultValue if 651719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 652719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 653719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 654719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param defaultValue Value to return if key does not exist 655719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a boolean value 656719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 65773bdf9761be2abdd85efc5fce165f3fa80fcfa65Craig Mautner public boolean getBoolean(String key, boolean defaultValue) { 658719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 659719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 660719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 661719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 662719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 663719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 664719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (Boolean) o; 665719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 666719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "Boolean", defaultValue, e); 667719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 668719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 669719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 670719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 671719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 672719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or (byte) 0 if 673719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 674719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 675719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 676719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a byte value 677719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 678719e6b167041ffaffc2245f692714c8de191863fCraig Mautner byte getByte(String key) { 679719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 680719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return getByte(key, (byte) 0); 681719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 682719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 683719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 684719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or defaultValue if 685719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 686719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 687719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 688719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param defaultValue Value to return if key does not exist 689719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a byte value 690719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 691719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Byte getByte(String key, byte defaultValue) { 692719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 693719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 694719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 695719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 696719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 697719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 698719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (Byte) o; 699719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 700719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "Byte", defaultValue, e); 701719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 702719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 703719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 704719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 705719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 706719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or (char) 0 if 707719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 708719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 709719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 710719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a char value 711719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 712719e6b167041ffaffc2245f692714c8de191863fCraig Mautner char getChar(String key) { 713719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 714719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return getChar(key, (char) 0); 715719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 716719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 717719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 718719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or defaultValue if 719719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 720719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 721719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 722719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param defaultValue Value to return if key does not exist 723719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a char value 724719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 725719e6b167041ffaffc2245f692714c8de191863fCraig Mautner char getChar(String key, char defaultValue) { 726719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 727719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 728719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 729719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 730719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 731719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 732719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (Character) o; 733719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 734719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "Character", defaultValue, e); 735719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 736719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 737719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 738719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 739719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 740719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or (short) 0 if 741719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 742719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 743719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 744719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a short value 745719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 746719e6b167041ffaffc2245f692714c8de191863fCraig Mautner short getShort(String key) { 747719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 748719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return getShort(key, (short) 0); 749719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 750719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 751719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 752719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or defaultValue if 753719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 754719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 755719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 756719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param defaultValue Value to return if key does not exist 757719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a short value 758719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 759719e6b167041ffaffc2245f692714c8de191863fCraig Mautner short getShort(String key, short defaultValue) { 760719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 761719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 762719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 763719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 764719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 765719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 766719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (Short) o; 767719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 768719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "Short", defaultValue, e); 769719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 770719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 771719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 772719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 773719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 774719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or 0 if 775719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 776719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 777719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 778719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return an int value 779719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 7800a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public int getInt(String key) { 781719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 782719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return getInt(key, 0); 783719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 784719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 785719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 786719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or defaultValue if 787719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 788719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 789719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 790719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param defaultValue Value to return if key does not exist 791719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return an int value 792719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 7930a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public int getInt(String key, int defaultValue) { 794719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 795719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 796719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 797719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 798719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 799719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 800719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (Integer) o; 801719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 802719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "Integer", defaultValue, e); 803719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 804719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 805719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 806719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 807719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 808719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or 0L if 809719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 810719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 811719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 812719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a long value 813719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 8140a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public long getLong(String key) { 815719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 816719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return getLong(key, 0L); 817719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 818719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 819719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 820719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or defaultValue if 821719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 822719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 823719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 824719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param defaultValue Value to return if key does not exist 825719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a long value 826719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 8270a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public long getLong(String key, long defaultValue) { 828719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 829719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 830719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 831719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 832719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 833719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 834719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (Long) o; 835719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 836719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "Long", defaultValue, e); 837719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 838719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 839719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 840719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 841719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 842719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or 0.0f if 843719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 844719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 845719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 846719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a float value 847719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 848719e6b167041ffaffc2245f692714c8de191863fCraig Mautner float getFloat(String key) { 849719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 850719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return getFloat(key, 0.0f); 851719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 852719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 853719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 854719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or defaultValue if 855719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 856719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 857719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 858719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param defaultValue Value to return if key does not exist 859719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a float value 860719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 861719e6b167041ffaffc2245f692714c8de191863fCraig Mautner float getFloat(String key, float defaultValue) { 862719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 863719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 864719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 865719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 866719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 867719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 868719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (Float) o; 869719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 870719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "Float", defaultValue, e); 871719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 872719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 873719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 874719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 875719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 876719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or 0.0 if 877719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 878719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 879719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 880719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a double value 881719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 8820a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public double getDouble(String key) { 883719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 884719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return getDouble(key, 0.0); 885719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 886719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 887719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 888719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or defaultValue if 889719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 890719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 891719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 892719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param defaultValue Value to return if key does not exist 893719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a double value 894719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 8950a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public double getDouble(String key, double defaultValue) { 896719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 897719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 898719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 899719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 900719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 901719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 902719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (Double) o; 903719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 904719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "Double", defaultValue, e); 905719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 906719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 907719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 908719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 909719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 910719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 911719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 912719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 913719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 914719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 915719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a String value, or null 916719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 9170a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public String getString(String key) { 918719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 919719e6b167041ffaffc2245f692714c8de191863fCraig Mautner final Object o = mMap.get(key); 920719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 921719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (String) o; 922719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 923719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "String", e); 924719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 925719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 926719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 927719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 928719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 929719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or defaultValue if 930aeaf87fe452353371b36da42e5beccca3150ab08Narayan Kamath * no mapping of the desired type exists for the given key or if a null 931aeaf87fe452353371b36da42e5beccca3150ab08Narayan Kamath * value is explicitly associated with the given key. 932719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 933719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 934aeaf87fe452353371b36da42e5beccca3150ab08Narayan Kamath * @param defaultValue Value to return if key does not exist or if a null 935aeaf87fe452353371b36da42e5beccca3150ab08Narayan Kamath * value is associated with the given key. 936719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return the String value associated with the given key, or defaultValue 937719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * if no valid String object is currently mapped to that key. 938719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 9390a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public String getString(String key, String defaultValue) { 940719e6b167041ffaffc2245f692714c8de191863fCraig Mautner final String s = getString(key); 941719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (s == null) ? defaultValue : s; 942719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 943719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 944719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 945719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 946719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 947719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 948719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 949719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 950719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a CharSequence value, or null 951719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 952719e6b167041ffaffc2245f692714c8de191863fCraig Mautner CharSequence getCharSequence(String key) { 953719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 954719e6b167041ffaffc2245f692714c8de191863fCraig Mautner final Object o = mMap.get(key); 955719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 956719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (CharSequence) o; 957719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 958719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "CharSequence", e); 959719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 960719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 961719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 962719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 963719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 964719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or defaultValue if 965aeaf87fe452353371b36da42e5beccca3150ab08Narayan Kamath * no mapping of the desired type exists for the given key or if a null 966aeaf87fe452353371b36da42e5beccca3150ab08Narayan Kamath * value is explicitly associated with the given key. 967719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 968719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 969aeaf87fe452353371b36da42e5beccca3150ab08Narayan Kamath * @param defaultValue Value to return if key does not exist or if a null 970aeaf87fe452353371b36da42e5beccca3150ab08Narayan Kamath * value is associated with the given key. 971719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return the CharSequence value associated with the given key, or defaultValue 972719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * if no valid CharSequence object is currently mapped to that key. 973719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 974719e6b167041ffaffc2245f692714c8de191863fCraig Mautner CharSequence getCharSequence(String key, CharSequence defaultValue) { 975719e6b167041ffaffc2245f692714c8de191863fCraig Mautner final CharSequence cs = getCharSequence(key); 976719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (cs == null) ? defaultValue : cs; 977719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 978719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 979719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 980719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 981719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 982719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 983719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 984719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 985719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a Serializable value, or null 986719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 987719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Serializable getSerializable(String key) { 988719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 989719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 990719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 991719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 992719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 993719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 994719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (Serializable) o; 995719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 996719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "Serializable", e); 997719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 998719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 999719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1000719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1001719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1002719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 1003719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 1004719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 1005719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1006719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 1007719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return an ArrayList<String> value, or null 1008719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1009719e6b167041ffaffc2245f692714c8de191863fCraig Mautner ArrayList<Integer> getIntegerArrayList(String key) { 1010719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 1011719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 1012719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 1013719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1014719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1015719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 1016719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (ArrayList<Integer>) o; 1017719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1018719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "ArrayList<Integer>", e); 1019719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1020719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1021719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1022719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1023719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1024719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 1025719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 1026719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 1027719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1028719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 1029719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return an ArrayList<String> value, or null 1030719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1031719e6b167041ffaffc2245f692714c8de191863fCraig Mautner ArrayList<String> getStringArrayList(String key) { 1032719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 1033719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 1034719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 1035719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1036719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1037719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 1038719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (ArrayList<String>) o; 1039719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1040719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "ArrayList<String>", e); 1041719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1042719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1043719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1044719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1045719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1046719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 1047719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 1048719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 1049719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1050719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 1051719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return an ArrayList<CharSequence> value, or null 1052719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1053719e6b167041ffaffc2245f692714c8de191863fCraig Mautner ArrayList<CharSequence> getCharSequenceArrayList(String key) { 1054719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 1055719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 1056719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 1057719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1058719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1059719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 1060719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (ArrayList<CharSequence>) o; 1061719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1062719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "ArrayList<CharSequence>", e); 1063719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1064719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1065719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1066719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1067719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1068719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 1069719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 1070719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 1071719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1072719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 1073719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a boolean[] value, or null 1074719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 107573bdf9761be2abdd85efc5fce165f3fa80fcfa65Craig Mautner public boolean[] getBooleanArray(String key) { 1076719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 1077719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 1078719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 1079719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1080719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1081719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 1082719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (boolean[]) o; 1083719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1084719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "byte[]", e); 1085719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1086719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1087719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1088719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1089719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1090719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 1091719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 1092719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 1093719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1094719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 1095719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a byte[] value, or null 1096719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1097719e6b167041ffaffc2245f692714c8de191863fCraig Mautner byte[] getByteArray(String key) { 1098719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 1099719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 1100719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 1101719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1102719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1103719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 1104719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (byte[]) o; 1105719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1106719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "byte[]", e); 1107719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1108719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1109719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1110719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1111719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1112719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 1113719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 1114719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 1115719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1116719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 1117719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a short[] value, or null 1118719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1119719e6b167041ffaffc2245f692714c8de191863fCraig Mautner short[] getShortArray(String key) { 1120719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 1121719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 1122719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 1123719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1124719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1125719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 1126719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (short[]) o; 1127719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1128719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "short[]", e); 1129719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1130719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1131719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1132719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1133719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1134719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 1135719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 1136719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 1137719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1138719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 1139719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a char[] value, or null 1140719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1141719e6b167041ffaffc2245f692714c8de191863fCraig Mautner char[] getCharArray(String key) { 1142719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 1143719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 1144719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 1145719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1146719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1147719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 1148719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (char[]) o; 1149719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1150719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "char[]", e); 1151719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1152719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1153719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1154719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1155719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1156719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 1157719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 1158719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 1159719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1160719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 1161719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return an int[] value, or null 1162719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 11630a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public int[] getIntArray(String key) { 1164719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 1165719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 1166719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 1167719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1168719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1169719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 1170719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (int[]) o; 1171719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1172719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "int[]", e); 1173719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1174719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1175719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1176719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1177719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1178719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 1179719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 1180719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 1181719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1182719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 1183719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a long[] value, or null 1184719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 11850a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public long[] getLongArray(String key) { 1186719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 1187719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 1188719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 1189719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1190719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1191719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 1192719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (long[]) o; 1193719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1194719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "long[]", e); 1195719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1196719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1197719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1198719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1199719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1200719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 1201719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 1202719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 1203719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1204719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 1205719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a float[] value, or null 1206719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1207719e6b167041ffaffc2245f692714c8de191863fCraig Mautner float[] getFloatArray(String key) { 1208719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 1209719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 1210719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 1211719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1212719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1213719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 1214719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (float[]) o; 1215719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1216719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "float[]", e); 1217719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1218719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1219719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1220719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1221719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1222719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 1223719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 1224719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 1225719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1226719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 1227719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a double[] value, or null 1228719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 12290a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public double[] getDoubleArray(String key) { 1230719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 1231719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 1232719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 1233719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1234719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1235719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 1236719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (double[]) o; 1237719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1238719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "double[]", e); 1239719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1240719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1241719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1242719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1243719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1244719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 1245719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 1246719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 1247719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1248719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 1249719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a String[] value, or null 1250719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 12510a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public String[] getStringArray(String key) { 1252719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 1253719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 1254719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 1255719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1256719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1257719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 1258719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (String[]) o; 1259719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1260719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "String[]", e); 1261719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1262719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1263719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1264719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1265719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1266719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 1267719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 1268719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 1269719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1270719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 1271719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a CharSequence[] value, or null 1272719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1273719e6b167041ffaffc2245f692714c8de191863fCraig Mautner CharSequence[] getCharSequenceArray(String key) { 1274719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 1275719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 1276719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 1277719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1278719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1279719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 1280719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (CharSequence[]) o; 1281719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1282719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "CharSequence[]", e); 1283719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1284719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1285719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1286719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1287719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1288719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Writes the Bundle contents to a Parcel, typically in order for 1289719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * it to be passed through an IBinder connection. 1290719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param parcel The parcel to copy this bundle to. 1291719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1292719e6b167041ffaffc2245f692714c8de191863fCraig Mautner void writeToParcelInner(Parcel parcel, int flags) { 1293719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (mParcelledData != null) { 1294719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (mParcelledData == EMPTY_PARCEL) { 1295719e6b167041ffaffc2245f692714c8de191863fCraig Mautner parcel.writeInt(0); 1296719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } else { 1297719e6b167041ffaffc2245f692714c8de191863fCraig Mautner int length = mParcelledData.dataSize(); 1298719e6b167041ffaffc2245f692714c8de191863fCraig Mautner parcel.writeInt(length); 1299719e6b167041ffaffc2245f692714c8de191863fCraig Mautner parcel.writeInt(BUNDLE_MAGIC); 1300719e6b167041ffaffc2245f692714c8de191863fCraig Mautner parcel.appendFrom(mParcelledData, 0, length); 1301719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1302719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } else { 1303719e6b167041ffaffc2245f692714c8de191863fCraig Mautner // Special case for empty bundles. 1304719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (mMap == null || mMap.size() <= 0) { 1305719e6b167041ffaffc2245f692714c8de191863fCraig Mautner parcel.writeInt(0); 1306719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return; 1307719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1308719e6b167041ffaffc2245f692714c8de191863fCraig Mautner int lengthPos = parcel.dataPosition(); 1309719e6b167041ffaffc2245f692714c8de191863fCraig Mautner parcel.writeInt(-1); // dummy, will hold length 1310719e6b167041ffaffc2245f692714c8de191863fCraig Mautner parcel.writeInt(BUNDLE_MAGIC); 1311719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1312719e6b167041ffaffc2245f692714c8de191863fCraig Mautner int startPos = parcel.dataPosition(); 1313719e6b167041ffaffc2245f692714c8de191863fCraig Mautner parcel.writeArrayMapInternal(mMap); 1314719e6b167041ffaffc2245f692714c8de191863fCraig Mautner int endPos = parcel.dataPosition(); 1315719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1316719e6b167041ffaffc2245f692714c8de191863fCraig Mautner // Backpatch length 1317719e6b167041ffaffc2245f692714c8de191863fCraig Mautner parcel.setDataPosition(lengthPos); 1318719e6b167041ffaffc2245f692714c8de191863fCraig Mautner int length = endPos - startPos; 1319719e6b167041ffaffc2245f692714c8de191863fCraig Mautner parcel.writeInt(length); 1320719e6b167041ffaffc2245f692714c8de191863fCraig Mautner parcel.setDataPosition(endPos); 1321719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1322719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1323719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1324719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1325719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Reads the Parcel contents into this Bundle, typically in order for 1326719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * it to be passed through an IBinder connection. 1327719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param parcel The parcel to overwrite this bundle from. 1328719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1329719e6b167041ffaffc2245f692714c8de191863fCraig Mautner void readFromParcelInner(Parcel parcel) { 1330719e6b167041ffaffc2245f692714c8de191863fCraig Mautner int length = parcel.readInt(); 1331719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (length < 0) { 1332719e6b167041ffaffc2245f692714c8de191863fCraig Mautner throw new RuntimeException("Bad length in parcel: " + length); 1333719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1334719e6b167041ffaffc2245f692714c8de191863fCraig Mautner readFromParcelInner(parcel, length); 1335719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1336719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1337719e6b167041ffaffc2245f692714c8de191863fCraig Mautner private void readFromParcelInner(Parcel parcel, int length) { 1338719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (length == 0) { 1339719e6b167041ffaffc2245f692714c8de191863fCraig Mautner // Empty Bundle or end of data. 1340719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mParcelledData = EMPTY_PARCEL; 1341719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return; 1342719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1343719e6b167041ffaffc2245f692714c8de191863fCraig Mautner int magic = parcel.readInt(); 1344719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (magic != BUNDLE_MAGIC) { 1345719e6b167041ffaffc2245f692714c8de191863fCraig Mautner //noinspection ThrowableInstanceNeverThrown 1346719e6b167041ffaffc2245f692714c8de191863fCraig Mautner throw new IllegalStateException("Bad magic number for Bundle: 0x" 1347719e6b167041ffaffc2245f692714c8de191863fCraig Mautner + Integer.toHexString(magic)); 1348719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1349719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1350719e6b167041ffaffc2245f692714c8de191863fCraig Mautner // Advance within this Parcel 1351719e6b167041ffaffc2245f692714c8de191863fCraig Mautner int offset = parcel.dataPosition(); 1352719e6b167041ffaffc2245f692714c8de191863fCraig Mautner parcel.setDataPosition(offset + length); 1353719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1354719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Parcel p = Parcel.obtain(); 1355719e6b167041ffaffc2245f692714c8de191863fCraig Mautner p.setDataPosition(0); 1356719e6b167041ffaffc2245f692714c8de191863fCraig Mautner p.appendFrom(parcel, offset, length); 1357719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (DEBUG) Log.d(TAG, "Retrieving " + Integer.toHexString(System.identityHashCode(this)) 1358719e6b167041ffaffc2245f692714c8de191863fCraig Mautner + ": " + length + " bundle bytes starting at " + offset); 1359719e6b167041ffaffc2245f692714c8de191863fCraig Mautner p.setDataPosition(0); 1360719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1361719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mParcelledData = p; 1362719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1363719e6b167041ffaffc2245f692714c8de191863fCraig Mautner} 1364