Loading src/java/com/android/internal/telephony/SubscriptionController.java +28 −1 Original line number Diff line number Diff line Loading @@ -1535,12 +1535,32 @@ public class SubscriptionController extends ISub.Stub { } } /** * This is only for internal use and the returned priority is arbitrary. The idea is to give a * higher value to name source that has higher priority to override other name sources. * @param nameSource Source of display name * @return int representing the priority. Higher value means higher priority. */ public static int getNameSourcePriority(int nameSource) { switch (nameSource) { case SubscriptionManager.NAME_SOURCE_USER_INPUT: return 3; case SubscriptionManager.NAME_SOURCE_CARRIER: return 2; case SubscriptionManager.NAME_SOURCE_SIM_SOURCE: return 1; case SubscriptionManager.NAME_SOURCE_DEFAULT_SOURCE: default: return 0; } } /** * Set display name by simInfo index with name source * @param displayName the display name of SIM card * @param subId the unique SubInfoRecord index in database * @param nameSource 0: NAME_SOURCE_DEFAULT_SOURCE, 1: NAME_SOURCE_SIM_SOURCE, * 2: NAME_SOURCE_USER_INPUT * 2: NAME_SOURCE_USER_INPUT, 3: NAME_SOURCE_CARRIER * @return the number of records updated */ @Override Loading @@ -1556,6 +1576,13 @@ public class SubscriptionController extends ISub.Stub { final long identity = Binder.clearCallingIdentity(); try { validateSubId(subId); for (SubscriptionInfo subInfo : mCacheActiveSubInfoList) { if (subInfo.getSubscriptionId() == subId && getNameSourcePriority(subInfo.getNameSource()) > getNameSourcePriority(nameSource)) { return 0; } } String nameToSet; if (displayName == null) { nameToSet = mContext.getString(SubscriptionManager.DEFAULT_NAME_RES); Loading src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java +10 −2 Original line number Diff line number Diff line Loading @@ -701,11 +701,13 @@ public class SubscriptionInfoUpdater extends Handler { for (EuiccProfileInfo embeddedProfile : embeddedProfiles) { int index = findSubscriptionInfoForIccid(existingSubscriptions, embeddedProfile.getIccid()); int nameSource = SubscriptionManager.NAME_SOURCE_DEFAULT_SOURCE; if (index < 0) { // No existing entry for this ICCID; create an empty one. SubscriptionController.getInstance().insertEmptySubInfoRecord( embeddedProfile.getIccid(), SubscriptionManager.SIM_NOT_INSERTED); } else { nameSource = existingSubscriptions.get(index).getNameSource(); existingSubscriptions.remove(index); } Loading @@ -725,8 +727,14 @@ public class SubscriptionInfoUpdater extends Handler { isRuleListEmpty ? null : UiccAccessRule.encodeRules( ruleList.toArray(new UiccAccessRule[ruleList.size()]))); values.put(SubscriptionManager.IS_REMOVABLE, isRemovable); // override DISPLAY_NAME if the priority of existing nameSource is <= carrier if (SubscriptionController.getNameSourcePriority(nameSource) <= SubscriptionController.getNameSourcePriority( SubscriptionManager.NAME_SOURCE_CARRIER)) { values.put(SubscriptionManager.DISPLAY_NAME, embeddedProfile.getNickname()); values.put(SubscriptionManager.NAME_SOURCE, SubscriptionManager.NAME_SOURCE_USER_INPUT); values.put(SubscriptionManager.NAME_SOURCE, SubscriptionManager.NAME_SOURCE_CARRIER); } values.put(SubscriptionManager.PROFILE_CLASS, embeddedProfile.getProfileClass()); CarrierIdentifier cid = embeddedProfile.getCarrierIdentifier(); if (cid != null) { Loading src/java/com/android/internal/telephony/uicc/UiccProfile.java +8 −8 Original line number Diff line number Diff line Loading @@ -341,12 +341,14 @@ public class UiccProfile extends IccCard { String newCarrierName = null; String currSpn = getServiceProviderName(); int nameSource = SubscriptionManager.NAME_SOURCE_SIM_SOURCE; // If carrier config is priority, use it regardless - the preference // and the name were both set by the carrier, so this is safe; // otherwise, if the SPN is priority but we don't have one *and* we have // a name in carrier config, use the carrier config name as a backup. if (preferCcName || (TextUtils.isEmpty(currSpn) && !TextUtils.isEmpty(ccName))) { newCarrierName = ccName; nameSource = SubscriptionManager.NAME_SOURCE_CARRIER; } else if (TextUtils.isEmpty(currSpn)) { // currSpn is empty and could not get name from carrier config; get name from carrier id Phone phone = PhoneFactory.getPhone(mPhoneId); Loading @@ -360,7 +362,7 @@ public class UiccProfile extends IccCard { mOperatorBrandOverrideRegistrants.notifyRegistrants(); } updateCarrierNameForSubscription(subCon, subId); updateCarrierNameForSubscription(subCon, subId, nameSource); } /** Loading Loading @@ -394,18 +396,17 @@ public class UiccProfile extends IccCard { if (!TextUtils.isEmpty(iso) && !iso.equals(mTelephonyManager.getSimCountryIsoForPhone(mPhoneId))) { mTelephonyManager.setSimCountryIsoForPhone(mPhoneId, iso); SubscriptionController.getInstance().setCountryIso(iso, subId); subCon.setCountryIso(iso, subId); } } private void updateCarrierNameForSubscription(SubscriptionController subCon, int subId) { private void updateCarrierNameForSubscription(SubscriptionController subCon, int subId, int nameSource) { /* update display name with carrier override */ SubscriptionInfo subInfo = subCon.getActiveSubscriptionInfo( subId, mContext.getOpPackageName()); if (subInfo == null || subInfo.getNameSource() == SubscriptionManager.NAME_SOURCE_USER_INPUT) { // either way, there is no subinfo to update if (subInfo == null) { return; } Loading @@ -414,8 +415,7 @@ public class UiccProfile extends IccCard { if (!TextUtils.isEmpty(newCarrierName) && !newCarrierName.equals(oldSubName)) { log("sim name[" + mPhoneId + "] = " + newCarrierName); subCon.setDisplayNameUsingSrc(newCarrierName, subId, SubscriptionManager.NAME_SOURCE_SIM_SOURCE); subCon.setDisplayNameUsingSrc(newCarrierName, subId, nameSource); } } Loading Loading
src/java/com/android/internal/telephony/SubscriptionController.java +28 −1 Original line number Diff line number Diff line Loading @@ -1535,12 +1535,32 @@ public class SubscriptionController extends ISub.Stub { } } /** * This is only for internal use and the returned priority is arbitrary. The idea is to give a * higher value to name source that has higher priority to override other name sources. * @param nameSource Source of display name * @return int representing the priority. Higher value means higher priority. */ public static int getNameSourcePriority(int nameSource) { switch (nameSource) { case SubscriptionManager.NAME_SOURCE_USER_INPUT: return 3; case SubscriptionManager.NAME_SOURCE_CARRIER: return 2; case SubscriptionManager.NAME_SOURCE_SIM_SOURCE: return 1; case SubscriptionManager.NAME_SOURCE_DEFAULT_SOURCE: default: return 0; } } /** * Set display name by simInfo index with name source * @param displayName the display name of SIM card * @param subId the unique SubInfoRecord index in database * @param nameSource 0: NAME_SOURCE_DEFAULT_SOURCE, 1: NAME_SOURCE_SIM_SOURCE, * 2: NAME_SOURCE_USER_INPUT * 2: NAME_SOURCE_USER_INPUT, 3: NAME_SOURCE_CARRIER * @return the number of records updated */ @Override Loading @@ -1556,6 +1576,13 @@ public class SubscriptionController extends ISub.Stub { final long identity = Binder.clearCallingIdentity(); try { validateSubId(subId); for (SubscriptionInfo subInfo : mCacheActiveSubInfoList) { if (subInfo.getSubscriptionId() == subId && getNameSourcePriority(subInfo.getNameSource()) > getNameSourcePriority(nameSource)) { return 0; } } String nameToSet; if (displayName == null) { nameToSet = mContext.getString(SubscriptionManager.DEFAULT_NAME_RES); Loading
src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java +10 −2 Original line number Diff line number Diff line Loading @@ -701,11 +701,13 @@ public class SubscriptionInfoUpdater extends Handler { for (EuiccProfileInfo embeddedProfile : embeddedProfiles) { int index = findSubscriptionInfoForIccid(existingSubscriptions, embeddedProfile.getIccid()); int nameSource = SubscriptionManager.NAME_SOURCE_DEFAULT_SOURCE; if (index < 0) { // No existing entry for this ICCID; create an empty one. SubscriptionController.getInstance().insertEmptySubInfoRecord( embeddedProfile.getIccid(), SubscriptionManager.SIM_NOT_INSERTED); } else { nameSource = existingSubscriptions.get(index).getNameSource(); existingSubscriptions.remove(index); } Loading @@ -725,8 +727,14 @@ public class SubscriptionInfoUpdater extends Handler { isRuleListEmpty ? null : UiccAccessRule.encodeRules( ruleList.toArray(new UiccAccessRule[ruleList.size()]))); values.put(SubscriptionManager.IS_REMOVABLE, isRemovable); // override DISPLAY_NAME if the priority of existing nameSource is <= carrier if (SubscriptionController.getNameSourcePriority(nameSource) <= SubscriptionController.getNameSourcePriority( SubscriptionManager.NAME_SOURCE_CARRIER)) { values.put(SubscriptionManager.DISPLAY_NAME, embeddedProfile.getNickname()); values.put(SubscriptionManager.NAME_SOURCE, SubscriptionManager.NAME_SOURCE_USER_INPUT); values.put(SubscriptionManager.NAME_SOURCE, SubscriptionManager.NAME_SOURCE_CARRIER); } values.put(SubscriptionManager.PROFILE_CLASS, embeddedProfile.getProfileClass()); CarrierIdentifier cid = embeddedProfile.getCarrierIdentifier(); if (cid != null) { Loading
src/java/com/android/internal/telephony/uicc/UiccProfile.java +8 −8 Original line number Diff line number Diff line Loading @@ -341,12 +341,14 @@ public class UiccProfile extends IccCard { String newCarrierName = null; String currSpn = getServiceProviderName(); int nameSource = SubscriptionManager.NAME_SOURCE_SIM_SOURCE; // If carrier config is priority, use it regardless - the preference // and the name were both set by the carrier, so this is safe; // otherwise, if the SPN is priority but we don't have one *and* we have // a name in carrier config, use the carrier config name as a backup. if (preferCcName || (TextUtils.isEmpty(currSpn) && !TextUtils.isEmpty(ccName))) { newCarrierName = ccName; nameSource = SubscriptionManager.NAME_SOURCE_CARRIER; } else if (TextUtils.isEmpty(currSpn)) { // currSpn is empty and could not get name from carrier config; get name from carrier id Phone phone = PhoneFactory.getPhone(mPhoneId); Loading @@ -360,7 +362,7 @@ public class UiccProfile extends IccCard { mOperatorBrandOverrideRegistrants.notifyRegistrants(); } updateCarrierNameForSubscription(subCon, subId); updateCarrierNameForSubscription(subCon, subId, nameSource); } /** Loading Loading @@ -394,18 +396,17 @@ public class UiccProfile extends IccCard { if (!TextUtils.isEmpty(iso) && !iso.equals(mTelephonyManager.getSimCountryIsoForPhone(mPhoneId))) { mTelephonyManager.setSimCountryIsoForPhone(mPhoneId, iso); SubscriptionController.getInstance().setCountryIso(iso, subId); subCon.setCountryIso(iso, subId); } } private void updateCarrierNameForSubscription(SubscriptionController subCon, int subId) { private void updateCarrierNameForSubscription(SubscriptionController subCon, int subId, int nameSource) { /* update display name with carrier override */ SubscriptionInfo subInfo = subCon.getActiveSubscriptionInfo( subId, mContext.getOpPackageName()); if (subInfo == null || subInfo.getNameSource() == SubscriptionManager.NAME_SOURCE_USER_INPUT) { // either way, there is no subinfo to update if (subInfo == null) { return; } Loading @@ -414,8 +415,7 @@ public class UiccProfile extends IccCard { if (!TextUtils.isEmpty(newCarrierName) && !newCarrierName.equals(oldSubName)) { log("sim name[" + mPhoneId + "] = " + newCarrierName); subCon.setDisplayNameUsingSrc(newCarrierName, subId, SubscriptionManager.NAME_SOURCE_SIM_SOURCE); subCon.setDisplayNameUsingSrc(newCarrierName, subId, nameSource); } } Loading