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 19c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedyimport android.annotation.Nullable; 20719e6b167041ffaffc2245f692714c8de191863fCraig Mautnerimport android.util.ArrayMap; 21719e6b167041ffaffc2245f692714c8de191863fCraig Mautnerimport android.util.Log; 22719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 23719e6b167041ffaffc2245f692714c8de191863fCraig Mautnerimport java.io.Serializable; 24719e6b167041ffaffc2245f692714c8de191863fCraig Mautnerimport java.util.ArrayList; 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 */ 66c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy BaseBundle(@Nullable 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 */ 279c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 2800a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public Object get(String key) { 281719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 282719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return mMap.get(key); 283719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 284719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 285719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 286719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Removes any entry with the given key from the mapping of this Bundle. 287719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 288719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String key 289719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 2900a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public void remove(String key) { 291719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 292719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.remove(key); 293719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 294719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 295719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 2960a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner * Inserts all mappings from the given PersistableBundle into this BaseBundle. 297719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 298719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param bundle a PersistableBundle 299719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 3000a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public void putAll(PersistableBundle bundle) { 301719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 302719e6b167041ffaffc2245f692714c8de191863fCraig Mautner bundle.unparcel(); 303719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.putAll(bundle.mMap); 304719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 305719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 306719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 3070a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner * Inserts all mappings from the given Map into this BaseBundle. 30821d24a21ea4aaadd78e73de54168e8a8a8973e4dCraig Mautner * 30921d24a21ea4aaadd78e73de54168e8a8a8973e4dCraig Mautner * @param map a Map 31021d24a21ea4aaadd78e73de54168e8a8a8973e4dCraig Mautner */ 311a83ce1dd2ad3a6b71e90ff4845afc1299fe17b9dDianne Hackborn void putAll(ArrayMap map) { 31221d24a21ea4aaadd78e73de54168e8a8a8973e4dCraig Mautner unparcel(); 31321d24a21ea4aaadd78e73de54168e8a8a8973e4dCraig Mautner mMap.putAll(map); 31421d24a21ea4aaadd78e73de54168e8a8a8973e4dCraig Mautner } 31521d24a21ea4aaadd78e73de54168e8a8a8973e4dCraig Mautner 31621d24a21ea4aaadd78e73de54168e8a8a8973e4dCraig Mautner /** 317719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns a Set containing the Strings used as keys in this Bundle. 318719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 319719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a Set of String keys 320719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 3210a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public Set<String> keySet() { 322719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 323719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return mMap.keySet(); 324719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 325719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 326719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 327719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a Boolean value into the mapping of this Bundle, replacing 328719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 329719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 330719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 331c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy * @param value a boolean 332719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 333c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putBoolean(@Nullable String key, boolean value) { 334719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 335719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 336719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 337719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 338719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 339719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a byte value into the mapping of this Bundle, replacing 340719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. 341719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 342719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 343719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a byte 344719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 345c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy void putByte(@Nullable String key, byte value) { 346719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 347719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 348719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 349719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 350719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 351719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a char value into the mapping of this Bundle, replacing 352719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. 353719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 354719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 355c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy * @param value a char 356719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 357c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy void putChar(@Nullable String key, char value) { 358719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 359719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 360719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 361719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 362719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 363719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a short value into the mapping of this Bundle, replacing 364719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. 365719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 366719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 367719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a short 368719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 369c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy void putShort(@Nullable String key, short value) { 370719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 371719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 372719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 373719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 374719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 375719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts an int value into the mapping of this Bundle, replacing 376719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. 377719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 378719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 379c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy * @param value an int 380719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 381c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putInt(@Nullable String key, int value) { 382719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 383719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 384719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 385719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 386719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 387719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a long value into the mapping of this Bundle, replacing 388719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. 389719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 390719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 391719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a long 392719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 393c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putLong(@Nullable String key, long value) { 394719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 395719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 396719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 397719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 398719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 399719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a float value into the mapping of this Bundle, replacing 400719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. 401719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 402719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 403719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a float 404719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 405c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy void putFloat(@Nullable String key, float value) { 406719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 407719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 408719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 409719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 410719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 411719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a double value into the mapping of this Bundle, replacing 412719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. 413719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 414719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 415719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a double 416719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 417c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putDouble(@Nullable String key, double value) { 418719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 419719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 420719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 421719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 422719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 423719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a String value into the mapping of this Bundle, replacing 424719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 425719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 426719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 427719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a String, or null 428719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 429c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putString(@Nullable String key, @Nullable String value) { 430719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 431719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 432719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 433719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 434719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 435719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a CharSequence value into the mapping of this Bundle, replacing 436719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 437719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 438719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 439719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a CharSequence, or null 440719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 441c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy void putCharSequence(@Nullable String key, @Nullable CharSequence value) { 442719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 443719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 444719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 445719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 446719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 447719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts an ArrayList<Integer> value into the mapping of this Bundle, replacing 448719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 449719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 450719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 451719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value an ArrayList<Integer> object, or null 452719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 453c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy void putIntegerArrayList(@Nullable String key, @Nullable ArrayList<Integer> value) { 454719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 455719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 456719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 457719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 458719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 459719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts an ArrayList<String> value into the mapping of this Bundle, replacing 460719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 461719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 462719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 463719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value an ArrayList<String> object, or null 464719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 465c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy void putStringArrayList(@Nullable String key, @Nullable ArrayList<String> value) { 466719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 467719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 468719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 469719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 470719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 471719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts an ArrayList<CharSequence> value into the mapping of this Bundle, replacing 472719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 473719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 474719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 475719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value an ArrayList<CharSequence> object, or null 476719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 477c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy void putCharSequenceArrayList(@Nullable String key, @Nullable ArrayList<CharSequence> value) { 478719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 479719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 480719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 481719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 482719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 483719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a Serializable value into the mapping of this Bundle, replacing 484719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 485719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 486719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 487719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a Serializable object, or null 488719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 489c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy void putSerializable(@Nullable String key, @Nullable Serializable value) { 490719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 491719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 492719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 493719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 494719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 495719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a boolean array value into the mapping of this Bundle, replacing 496719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 497719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 498719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 499719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a boolean array object, or null 500719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 501c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putBooleanArray(@Nullable String key, @Nullable boolean[] value) { 502719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 503719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 504719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 505719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 506719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 507719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a byte array value into the mapping of this Bundle, replacing 508719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 509719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 510719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 511719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a byte array object, or null 512719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 513c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy void putByteArray(@Nullable String key, @Nullable byte[] value) { 514719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 515719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 516719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 517719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 518719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 519719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a short array value into the mapping of this Bundle, replacing 520719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 521719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 522719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 523719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a short array object, or null 524719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 525c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy void putShortArray(@Nullable String key, @Nullable short[] value) { 526719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 527719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 528719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 529719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 530719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 531719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a char array value into the mapping of this Bundle, replacing 532719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 533719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 534719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 535719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a char array object, or null 536719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 537c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy void putCharArray(@Nullable String key, @Nullable char[] value) { 538719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 539719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 540719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 541719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 542719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 543719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts an int array value into the mapping of this Bundle, replacing 544719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 545719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 546719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 547719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value an int array object, or null 548719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 549c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putIntArray(@Nullable String key, @Nullable int[] value) { 550719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 551719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 552719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 553719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 554719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 555719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a long array value into the mapping of this Bundle, replacing 556719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 557719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 558719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 559719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a long array object, or null 560719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 561c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putLongArray(@Nullable String key, @Nullable long[] value) { 562719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 563719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 564719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 565719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 566719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 567719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a float array value into the mapping of this Bundle, replacing 568719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 569719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 570719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 571719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a float array object, or null 572719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 573c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy void putFloatArray(@Nullable String key, @Nullable float[] value) { 574719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 575719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 576719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 577719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 578719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 579719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a double array value into the mapping of this Bundle, replacing 580719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 581719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 582719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 583719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a double array object, or null 584719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 585c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putDoubleArray(@Nullable String key, @Nullable double[] value) { 586719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 587719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 588719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 589719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 590719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 591719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a String array value into the mapping of this Bundle, replacing 592719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 593719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 594719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 595719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a String array object, or null 596719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 597c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public void putStringArray(@Nullable String key, @Nullable String[] value) { 598719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 599719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 600719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 601719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 602719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 603719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Inserts a CharSequence array value into the mapping of this Bundle, replacing 604719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * any existing value for the given key. Either key or value may be null. 605719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 606719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 607719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param value a CharSequence array object, or null 608719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 609c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy void putCharSequenceArray(@Nullable String key, @Nullable CharSequence[] value) { 610719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 611719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mMap.put(key, value); 612719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 613719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 614719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 615719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or false if 616719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 617719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 618719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 619719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a boolean value 620719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 62173bdf9761be2abdd85efc5fce165f3fa80fcfa65Craig Mautner public boolean getBoolean(String key) { 622719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 623719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (DEBUG) Log.d(TAG, "Getting boolean in " 624719e6b167041ffaffc2245f692714c8de191863fCraig Mautner + Integer.toHexString(System.identityHashCode(this))); 625719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return getBoolean(key, false); 626719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 627719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 628719e6b167041ffaffc2245f692714c8de191863fCraig Mautner // Log a message if the value was non-null but not of the expected type 629719e6b167041ffaffc2245f692714c8de191863fCraig Mautner void typeWarning(String key, Object value, String className, 630719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object defaultValue, ClassCastException e) { 631719e6b167041ffaffc2245f692714c8de191863fCraig Mautner StringBuilder sb = new StringBuilder(); 632719e6b167041ffaffc2245f692714c8de191863fCraig Mautner sb.append("Key "); 633719e6b167041ffaffc2245f692714c8de191863fCraig Mautner sb.append(key); 634719e6b167041ffaffc2245f692714c8de191863fCraig Mautner sb.append(" expected "); 635719e6b167041ffaffc2245f692714c8de191863fCraig Mautner sb.append(className); 636719e6b167041ffaffc2245f692714c8de191863fCraig Mautner sb.append(" but value was a "); 637719e6b167041ffaffc2245f692714c8de191863fCraig Mautner sb.append(value.getClass().getName()); 638719e6b167041ffaffc2245f692714c8de191863fCraig Mautner sb.append(". The default value "); 639719e6b167041ffaffc2245f692714c8de191863fCraig Mautner sb.append(defaultValue); 640719e6b167041ffaffc2245f692714c8de191863fCraig Mautner sb.append(" was returned."); 641719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Log.w(TAG, sb.toString()); 642719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Log.w(TAG, "Attempt to cast generated internal exception:", e); 643719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 644719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 645719e6b167041ffaffc2245f692714c8de191863fCraig Mautner void typeWarning(String key, Object value, String className, 646719e6b167041ffaffc2245f692714c8de191863fCraig Mautner ClassCastException e) { 647719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, value, className, "<null>", e); 648719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 649719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 650719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 651719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or defaultValue if 652719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 653719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 654719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 655719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param defaultValue Value to return if key does not exist 656719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a boolean value 657719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 65873bdf9761be2abdd85efc5fce165f3fa80fcfa65Craig Mautner public boolean getBoolean(String key, boolean defaultValue) { 659719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 660719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 661719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 662719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 663719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 664719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 665719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (Boolean) o; 666719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 667719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "Boolean", defaultValue, e); 668719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 669719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 670719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 671719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 672719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 673719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or (byte) 0 if 674719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 675719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 676719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 677719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a byte value 678719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 679719e6b167041ffaffc2245f692714c8de191863fCraig Mautner byte getByte(String key) { 680719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 681719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return getByte(key, (byte) 0); 682719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 683719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 684719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 685719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or defaultValue if 686719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 687719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 688719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 689719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param defaultValue Value to return if key does not exist 690719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a byte value 691719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 692719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Byte getByte(String key, byte defaultValue) { 693719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 694719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 695719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 696719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 697719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 698719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 699719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (Byte) o; 700719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 701719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "Byte", defaultValue, e); 702719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 703719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 704719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 705719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 706719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 707719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or (char) 0 if 708719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 709719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 710719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 711719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a char value 712719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 713719e6b167041ffaffc2245f692714c8de191863fCraig Mautner char getChar(String key) { 714719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 715719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return getChar(key, (char) 0); 716719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 717719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 718719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 719719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or defaultValue if 720719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 721719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 722719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 723719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param defaultValue Value to return if key does not exist 724719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a char value 725719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 726719e6b167041ffaffc2245f692714c8de191863fCraig Mautner char getChar(String key, char defaultValue) { 727719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 728719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 729719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 730719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 731719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 732719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 733719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (Character) o; 734719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 735719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "Character", defaultValue, e); 736719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 737719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 738719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 739719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 740719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 741719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or (short) 0 if 742719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 743719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 744719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 745719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a short value 746719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 747719e6b167041ffaffc2245f692714c8de191863fCraig Mautner short getShort(String key) { 748719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 749719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return getShort(key, (short) 0); 750719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 751719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 752719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 753719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or defaultValue if 754719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 755719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 756719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 757719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param defaultValue Value to return if key does not exist 758719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a short value 759719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 760719e6b167041ffaffc2245f692714c8de191863fCraig Mautner short getShort(String key, short defaultValue) { 761719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 762719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 763719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 764719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 765719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 766719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 767719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (Short) o; 768719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 769719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "Short", defaultValue, e); 770719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 771719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 772719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 773719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 774719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 775719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or 0 if 776719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 777719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 778719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 779719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return an int value 780719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 7810a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public int getInt(String key) { 782719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 783719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return getInt(key, 0); 784719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 785719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 786719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 787719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or defaultValue if 788719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 789719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 790719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 791719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param defaultValue Value to return if key does not exist 792719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return an int value 793719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 7940a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public int getInt(String key, int defaultValue) { 795719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 796719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 797719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 798719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 799719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 800719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 801719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (Integer) o; 802719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 803719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "Integer", defaultValue, e); 804719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 805719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 806719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 807719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 808719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 809719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or 0L if 810719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 811719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 812719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 813719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a long value 814719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 8150a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public long getLong(String key) { 816719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 817719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return getLong(key, 0L); 818719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 819719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 820719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 821719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or defaultValue if 822719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 823719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 824719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 825719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param defaultValue Value to return if key does not exist 826719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a long value 827719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 8280a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public long getLong(String key, long defaultValue) { 829719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 830719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 831719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 832719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 833719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 834719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 835719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (Long) o; 836719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 837719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "Long", defaultValue, e); 838719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 839719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 840719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 841719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 842719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 843719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or 0.0f if 844719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 845719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 846719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 847719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a float value 848719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 849719e6b167041ffaffc2245f692714c8de191863fCraig Mautner float getFloat(String key) { 850719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 851719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return getFloat(key, 0.0f); 852719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 853719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 854719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 855719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or defaultValue if 856719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 857719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 858719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 859719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param defaultValue Value to return if key does not exist 860719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a float value 861719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 862719e6b167041ffaffc2245f692714c8de191863fCraig Mautner float getFloat(String key, float defaultValue) { 863719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 864719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 865719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 866719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 867719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 868719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 869719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (Float) o; 870719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 871719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "Float", defaultValue, e); 872719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 873719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 874719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 875719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 876719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 877719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or 0.0 if 878719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 879719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 880719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 881719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a double value 882719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 8830a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public double getDouble(String key) { 884719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 885719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return getDouble(key, 0.0); 886719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 887719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 888719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 889719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or defaultValue if 890719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key. 891719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 892719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String 893719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param defaultValue Value to return if key does not exist 894719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a double value 895719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 8960a8e160eb56f3b8f504b37349a79ec4edb7e5039Craig Mautner public double getDouble(String key, double defaultValue) { 897719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 898719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 899719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 900719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 901719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 902719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 903719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (Double) o; 904719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 905719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "Double", defaultValue, e); 906719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return defaultValue; 907719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 908719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 909719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 910719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 911719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 912719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 913719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 914719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 915719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 916719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a String value, or null 917719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 918c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 919c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public String getString(@Nullable String key) { 920719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 921719e6b167041ffaffc2245f692714c8de191863fCraig Mautner final Object o = mMap.get(key); 922719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 923719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (String) o; 924719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 925719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "String", e); 926719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 927719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 928719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 929719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 930719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 931719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or defaultValue if 932aeaf87fe452353371b36da42e5beccca3150ab08Narayan Kamath * no mapping of the desired type exists for the given key or if a null 933aeaf87fe452353371b36da42e5beccca3150ab08Narayan Kamath * value is explicitly associated with the given key. 934719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 935719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 936aeaf87fe452353371b36da42e5beccca3150ab08Narayan Kamath * @param defaultValue Value to return if key does not exist or if a null 937aeaf87fe452353371b36da42e5beccca3150ab08Narayan Kamath * value is associated with the given key. 938719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return the String value associated with the given key, or defaultValue 939719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * if no valid String object is currently mapped to that key. 940719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 941c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public String getString(@Nullable String key, String defaultValue) { 942719e6b167041ffaffc2245f692714c8de191863fCraig Mautner final String s = getString(key); 943719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (s == null) ? defaultValue : s; 944719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 945719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 946719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 947719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 948719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 949719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 950719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 951719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 952719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a CharSequence value, or null 953719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 954c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 955c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy CharSequence getCharSequence(@Nullable String key) { 956719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 957719e6b167041ffaffc2245f692714c8de191863fCraig Mautner final Object o = mMap.get(key); 958719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 959719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (CharSequence) o; 960719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 961719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "CharSequence", e); 962719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 963719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 964719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 965719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 966719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 967719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or defaultValue if 968aeaf87fe452353371b36da42e5beccca3150ab08Narayan Kamath * no mapping of the desired type exists for the given key or if a null 969aeaf87fe452353371b36da42e5beccca3150ab08Narayan Kamath * value is explicitly associated with the given key. 970719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 971719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 972aeaf87fe452353371b36da42e5beccca3150ab08Narayan Kamath * @param defaultValue Value to return if key does not exist or if a null 973aeaf87fe452353371b36da42e5beccca3150ab08Narayan Kamath * value is associated with the given key. 974719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return the CharSequence value associated with the given key, or defaultValue 975719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * if no valid CharSequence object is currently mapped to that key. 976719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 977c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy CharSequence getCharSequence(@Nullable String key, CharSequence defaultValue) { 978719e6b167041ffaffc2245f692714c8de191863fCraig Mautner final CharSequence cs = getCharSequence(key); 979719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (cs == null) ? defaultValue : cs; 980719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 981719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 982719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 983719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 984719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 985719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 986719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 987719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 988719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a Serializable value, or null 989719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 990c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 991c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy Serializable getSerializable(@Nullable String key) { 992719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 993719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 994719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 995719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 996719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 997719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 998719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (Serializable) o; 999719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1000719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "Serializable", e); 1001719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1002719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1003719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1004719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1005719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1006719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 1007719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 1008719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 1009719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1010719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 1011719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return an ArrayList<String> value, or null 1012719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1013c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1014c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy ArrayList<Integer> getIntegerArrayList(@Nullable String key) { 1015719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 1016719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 1017719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 1018719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1019719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1020719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 1021719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (ArrayList<Integer>) o; 1022719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1023719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "ArrayList<Integer>", e); 1024719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1025719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1026719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1027719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1028719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1029719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 1030719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 1031719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 1032719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1033719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 1034719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return an ArrayList<String> value, or null 1035719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1036c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1037c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy ArrayList<String> getStringArrayList(@Nullable String key) { 1038719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 1039719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 1040719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 1041719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1042719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1043719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 1044719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (ArrayList<String>) o; 1045719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1046719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "ArrayList<String>", e); 1047719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1048719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1049719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1050719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1051719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1052719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 1053719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 1054719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 1055719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1056719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 1057719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return an ArrayList<CharSequence> value, or null 1058719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1059c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1060c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy ArrayList<CharSequence> getCharSequenceArrayList(@Nullable String key) { 1061719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 1062719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 1063719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 1064719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1065719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1066719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 1067719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (ArrayList<CharSequence>) o; 1068719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1069719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "ArrayList<CharSequence>", e); 1070719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1071719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1072719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1073719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1074719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1075719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 1076719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 1077719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 1078719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1079719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 1080719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a boolean[] value, or null 1081719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1082c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1083c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public boolean[] getBooleanArray(@Nullable String key) { 1084719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 1085719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 1086719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 1087719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1088719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1089719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 1090719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (boolean[]) o; 1091719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1092719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "byte[]", e); 1093719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1094719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1095719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1096719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1097719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1098719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 1099719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 1100719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 1101719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1102719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 1103719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a byte[] value, or null 1104719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1105c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1106c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy byte[] getByteArray(@Nullable String key) { 1107719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 1108719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 1109719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 1110719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1111719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1112719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 1113719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (byte[]) o; 1114719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1115719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "byte[]", e); 1116719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1117719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1118719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1119719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1120719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1121719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 1122719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 1123719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 1124719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1125719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 1126719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a short[] value, or null 1127719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1128c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1129c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy short[] getShortArray(@Nullable String key) { 1130719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 1131719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 1132719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 1133719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1134719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1135719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 1136719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (short[]) o; 1137719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1138719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "short[]", e); 1139719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1140719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1141719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1142719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1143719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1144719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 1145719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 1146719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 1147719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1148719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 1149719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a char[] value, or null 1150719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1151c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1152c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy char[] getCharArray(@Nullable String key) { 1153719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 1154719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 1155719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 1156719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1157719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1158719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 1159719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (char[]) o; 1160719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1161719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "char[]", e); 1162719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1163719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1164719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1165719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1166719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1167719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 1168719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 1169719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 1170719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1171719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 1172719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return an int[] value, or null 1173719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1174c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1175c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public int[] getIntArray(@Nullable String key) { 1176719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 1177719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 1178719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 1179719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1180719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1181719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 1182719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (int[]) o; 1183719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1184719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "int[]", e); 1185719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1186719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1187719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1188719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1189719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1190719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 1191719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 1192719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 1193719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1194719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 1195719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a long[] value, or null 1196719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1197c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1198c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public long[] getLongArray(@Nullable String key) { 1199719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 1200719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 1201719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 1202719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1203719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1204719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 1205719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (long[]) o; 1206719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1207719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "long[]", e); 1208719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1209719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1210719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1211719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1212719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1213719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 1214719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 1215719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 1216719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1217719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 1218719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a float[] value, or null 1219719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1220c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1221c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy float[] getFloatArray(@Nullable String key) { 1222719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 1223719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 1224719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 1225719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1226719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1227719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 1228719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (float[]) o; 1229719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1230719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "float[]", e); 1231719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1232719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1233719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1234719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1235719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1236719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 1237719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 1238719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 1239719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1240719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 1241719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a double[] value, or null 1242719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1243c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1244c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public double[] getDoubleArray(@Nullable String key) { 1245719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 1246719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 1247719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 1248719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1249719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1250719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 1251719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (double[]) o; 1252719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1253719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "double[]", e); 1254719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1255719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1256719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1257719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1258719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1259719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 1260719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 1261719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 1262719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1263719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 1264719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a String[] value, or null 1265719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1266c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1267c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy public String[] getStringArray(@Nullable String key) { 1268719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 1269719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 1270719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 1271719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1272719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1273719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 1274719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (String[]) o; 1275719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1276719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "String[]", e); 1277719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1278719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1279719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1280719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1281719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1282719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Returns the value associated with the given key, or null if 1283719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * no mapping of the desired type exists for the given key or a null 1284719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * value is explicitly associated with the key. 1285719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * 1286719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param key a String, or null 1287719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @return a CharSequence[] value, or null 1288719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1289c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy @Nullable 1290c6a65dff3d9ed3e75f9f4f5abbf24e3d10bdba8bScott Kennedy CharSequence[] getCharSequenceArray(@Nullable String key) { 1291719e6b167041ffaffc2245f692714c8de191863fCraig Mautner unparcel(); 1292719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Object o = mMap.get(key); 1293719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (o == null) { 1294719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1295719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1296719e6b167041ffaffc2245f692714c8de191863fCraig Mautner try { 1297719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return (CharSequence[]) o; 1298719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } catch (ClassCastException e) { 1299719e6b167041ffaffc2245f692714c8de191863fCraig Mautner typeWarning(key, o, "CharSequence[]", e); 1300719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return null; 1301719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1302719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1303719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1304719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1305719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Writes the Bundle contents to a Parcel, typically in order for 1306719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * it to be passed through an IBinder connection. 1307719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param parcel The parcel to copy this bundle to. 1308719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1309719e6b167041ffaffc2245f692714c8de191863fCraig Mautner void writeToParcelInner(Parcel parcel, int flags) { 1310719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (mParcelledData != null) { 1311719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (mParcelledData == EMPTY_PARCEL) { 1312719e6b167041ffaffc2245f692714c8de191863fCraig Mautner parcel.writeInt(0); 1313719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } else { 1314719e6b167041ffaffc2245f692714c8de191863fCraig Mautner int length = mParcelledData.dataSize(); 1315719e6b167041ffaffc2245f692714c8de191863fCraig Mautner parcel.writeInt(length); 1316719e6b167041ffaffc2245f692714c8de191863fCraig Mautner parcel.writeInt(BUNDLE_MAGIC); 1317719e6b167041ffaffc2245f692714c8de191863fCraig Mautner parcel.appendFrom(mParcelledData, 0, length); 1318719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1319719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } else { 1320719e6b167041ffaffc2245f692714c8de191863fCraig Mautner // Special case for empty bundles. 1321719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (mMap == null || mMap.size() <= 0) { 1322719e6b167041ffaffc2245f692714c8de191863fCraig Mautner parcel.writeInt(0); 1323719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return; 1324719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1325719e6b167041ffaffc2245f692714c8de191863fCraig Mautner int lengthPos = parcel.dataPosition(); 1326719e6b167041ffaffc2245f692714c8de191863fCraig Mautner parcel.writeInt(-1); // dummy, will hold length 1327719e6b167041ffaffc2245f692714c8de191863fCraig Mautner parcel.writeInt(BUNDLE_MAGIC); 1328719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1329719e6b167041ffaffc2245f692714c8de191863fCraig Mautner int startPos = parcel.dataPosition(); 1330719e6b167041ffaffc2245f692714c8de191863fCraig Mautner parcel.writeArrayMapInternal(mMap); 1331719e6b167041ffaffc2245f692714c8de191863fCraig Mautner int endPos = parcel.dataPosition(); 1332719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1333719e6b167041ffaffc2245f692714c8de191863fCraig Mautner // Backpatch length 1334719e6b167041ffaffc2245f692714c8de191863fCraig Mautner parcel.setDataPosition(lengthPos); 1335719e6b167041ffaffc2245f692714c8de191863fCraig Mautner int length = endPos - startPos; 1336719e6b167041ffaffc2245f692714c8de191863fCraig Mautner parcel.writeInt(length); 1337719e6b167041ffaffc2245f692714c8de191863fCraig Mautner parcel.setDataPosition(endPos); 1338719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1339719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1340719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1341719e6b167041ffaffc2245f692714c8de191863fCraig Mautner /** 1342719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * Reads the Parcel contents into this Bundle, typically in order for 1343719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * it to be passed through an IBinder connection. 1344719e6b167041ffaffc2245f692714c8de191863fCraig Mautner * @param parcel The parcel to overwrite this bundle from. 1345719e6b167041ffaffc2245f692714c8de191863fCraig Mautner */ 1346719e6b167041ffaffc2245f692714c8de191863fCraig Mautner void readFromParcelInner(Parcel parcel) { 1347719e6b167041ffaffc2245f692714c8de191863fCraig Mautner int length = parcel.readInt(); 1348719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (length < 0) { 1349719e6b167041ffaffc2245f692714c8de191863fCraig Mautner throw new RuntimeException("Bad length in parcel: " + length); 1350719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1351719e6b167041ffaffc2245f692714c8de191863fCraig Mautner readFromParcelInner(parcel, length); 1352719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1353719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1354719e6b167041ffaffc2245f692714c8de191863fCraig Mautner private void readFromParcelInner(Parcel parcel, int length) { 1355719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (length == 0) { 1356719e6b167041ffaffc2245f692714c8de191863fCraig Mautner // Empty Bundle or end of data. 1357719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mParcelledData = EMPTY_PARCEL; 1358719e6b167041ffaffc2245f692714c8de191863fCraig Mautner return; 1359719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1360719e6b167041ffaffc2245f692714c8de191863fCraig Mautner int magic = parcel.readInt(); 1361719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (magic != BUNDLE_MAGIC) { 1362719e6b167041ffaffc2245f692714c8de191863fCraig Mautner //noinspection ThrowableInstanceNeverThrown 1363719e6b167041ffaffc2245f692714c8de191863fCraig Mautner throw new IllegalStateException("Bad magic number for Bundle: 0x" 1364719e6b167041ffaffc2245f692714c8de191863fCraig Mautner + Integer.toHexString(magic)); 1365719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1366719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1367719e6b167041ffaffc2245f692714c8de191863fCraig Mautner // Advance within this Parcel 1368719e6b167041ffaffc2245f692714c8de191863fCraig Mautner int offset = parcel.dataPosition(); 1369719e6b167041ffaffc2245f692714c8de191863fCraig Mautner parcel.setDataPosition(offset + length); 1370719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1371719e6b167041ffaffc2245f692714c8de191863fCraig Mautner Parcel p = Parcel.obtain(); 1372719e6b167041ffaffc2245f692714c8de191863fCraig Mautner p.setDataPosition(0); 1373719e6b167041ffaffc2245f692714c8de191863fCraig Mautner p.appendFrom(parcel, offset, length); 1374719e6b167041ffaffc2245f692714c8de191863fCraig Mautner if (DEBUG) Log.d(TAG, "Retrieving " + Integer.toHexString(System.identityHashCode(this)) 1375719e6b167041ffaffc2245f692714c8de191863fCraig Mautner + ": " + length + " bundle bytes starting at " + offset); 1376719e6b167041ffaffc2245f692714c8de191863fCraig Mautner p.setDataPosition(0); 1377719e6b167041ffaffc2245f692714c8de191863fCraig Mautner 1378719e6b167041ffaffc2245f692714c8de191863fCraig Mautner mParcelledData = p; 1379719e6b167041ffaffc2245f692714c8de191863fCraig Mautner } 1380719e6b167041ffaffc2245f692714c8de191863fCraig Mautner} 1381