diff options
| -rw-r--r-- | telephony/java/android/telephony/SubscriptionInfo.java | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/telephony/java/android/telephony/SubscriptionInfo.java b/telephony/java/android/telephony/SubscriptionInfo.java index 104cc7516aeb..2bbfdba425c9 100644 --- a/telephony/java/android/telephony/SubscriptionInfo.java +++ b/telephony/java/android/telephony/SubscriptionInfo.java @@ -23,6 +23,7 @@ import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; @@ -113,9 +114,9 @@ public class SubscriptionInfo implements Parcelable { private int mDataRoaming; /** - * SIM Icon bitmap + * SIM icon bitmap cache */ - private Bitmap mIconBitmap; + @Nullable private Bitmap mIconBitmap; /** * Mobile Country Code @@ -403,6 +404,10 @@ public class SubscriptionInfo implements Parcelable { * @return A bitmap icon for this {@code SubscriptionInfo}. */ public Bitmap createIconBitmap(Context context) { + if (mIconBitmap == null) { + mIconBitmap = BitmapFactory.decodeResource(context.getResources(), + com.android.internal.R.drawable.ic_sim_card_multi_24px_clr); + } int width = mIconBitmap.getWidth(); int height = mIconBitmap.getHeight(); DisplayMetrics metrics = context.getResources().getDisplayMetrics(); @@ -765,7 +770,6 @@ public class SubscriptionInfo implements Parcelable { String mcc = source.readString(); String mnc = source.readString(); String countryIso = source.readString(); - Bitmap iconBitmap = source.readParcelable(Bitmap.class.getClassLoader()); boolean isEmbedded = source.readBoolean(); UiccAccessRule[] nativeAccessRules = source.createTypedArray(UiccAccessRule.CREATOR); String cardString = source.readString(); @@ -784,10 +788,10 @@ public class SubscriptionInfo implements Parcelable { boolean areUiccApplicationsEnabled = source.readBoolean(); SubscriptionInfo info = new SubscriptionInfo(id, iccId, simSlotIndex, displayName, - carrierName, nameSource, iconTint, number, dataRoaming, iconBitmap, mcc, mnc, - countryIso, isEmbedded, nativeAccessRules, cardString, cardId, isOpportunistic, - groupUUID, isGroupDisabled, carrierid, profileClass, subType, groupOwner, - carrierConfigAccessRules, areUiccApplicationsEnabled); + carrierName, nameSource, iconTint, number, dataRoaming, /* icon= */ null, + mcc, mnc, countryIso, isEmbedded, nativeAccessRules, cardString, cardId, + isOpportunistic, groupUUID, isGroupDisabled, carrierid, profileClass, subType, + groupOwner, carrierConfigAccessRules, areUiccApplicationsEnabled); info.setAssociatedPlmns(ehplmns, hplmns); return info; } @@ -812,7 +816,7 @@ public class SubscriptionInfo implements Parcelable { dest.writeString(mMcc); dest.writeString(mMnc); dest.writeString(mCountryIso); - dest.writeParcelable(mIconBitmap, flags); + // Do not write mIconBitmap since it should be lazily loaded on first usage dest.writeBoolean(mIsEmbedded); dest.writeTypedArray(mNativeAccessRules, flags); dest.writeString(mCardString); |