diff options
author | Jack Yu <jackyu@google.com> | 2022-12-22 03:36:19 -0800 |
---|---|---|
committer | Jack Yu <jackyu@google.com> | 2022-12-22 19:42:41 +0000 |
commit | 787f7c56e4fd83a9776aff34e00f0f13e3a6420b (patch) | |
tree | 118cb64bc01d3f2b463c1f0957b1a1f14e1f0ba4 /src/java/com/android/internal/telephony/uicc | |
parent | 2c95c1a82730fca85672c2326a34c9daf17b73b7 (diff) | |
download | telephony-787f7c56e4fd83a9776aff34e00f0f13e3a6420b.tar.gz |
Added SIM events handling and fix crashes
1. Added SIM events handling in subscription manager service.
2. Fixed all crashes found during boot up.
3. Update subscription before broadcasting carrier config changed
event.
Bug: 239607619
Test: Manual
Change-Id: I97fe3454548426027fd403e820aecb34481a22f4
Diffstat (limited to 'src/java/com/android/internal/telephony/uicc')
-rw-r--r-- | src/java/com/android/internal/telephony/uicc/UiccController.java | 29 | ||||
-rw-r--r-- | src/java/com/android/internal/telephony/uicc/UiccProfile.java | 11 |
2 files changed, 11 insertions, 29 deletions
diff --git a/src/java/com/android/internal/telephony/uicc/UiccController.java b/src/java/com/android/internal/telephony/uicc/UiccController.java index 1ad7ee35f6..f88aa7d1ed 100644 --- a/src/java/com/android/internal/telephony/uicc/UiccController.java +++ b/src/java/com/android/internal/telephony/uicc/UiccController.java @@ -40,7 +40,6 @@ import android.preference.PreferenceManager; import android.sysprop.TelephonyProperties; import android.telephony.AnomalyReporter; import android.telephony.CarrierConfigManager; -import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.TelephonyManager.SimState; @@ -951,31 +950,6 @@ public class UiccController extends Handler { } /** - * Check if the SIM application is enabled on the card or not. - * - * @param phoneId The phone id. - * @return {@code true} if the application is enabled. - */ - private boolean areUiccAppsEnabledOnCard(int phoneId) { - // When uicc apps are disabled(supported in IRadio 1.5), we will still get IccId from - // cardStatus (since IRadio 1.2). Amd upon cardStatus change we'll receive another - // handleSimNotReady so this will be evaluated again. - UiccSlot slot = getUiccSlotForPhone(phoneId); - if (slot == null) return false; - UiccPort port = getUiccPort(phoneId); - String iccId = (port == null) ? null : port.getIccId(); - if (iccId == null) { - return false; - } - SubscriptionInfo info = SubscriptionManagerService.getInstance() - .getAllSubInfoList(mContext.getOpPackageName(), mContext.getAttributionTag()) - .stream().filter(subInfo -> subInfo.getIccId().equals( - IccUtils.stripTrailingFs(iccId))) - .findFirst().orElse(null); - return info != null && info.areUiccApplicationsEnabled(); - } - - /** * Update the SIM state. * * @param phoneId Phone id. @@ -1011,7 +985,8 @@ public class UiccController extends Handler { if (simState == TelephonyManager.SIM_STATE_NOT_READY && (uiccProfile != null && !uiccProfile.isEmptyProfile()) - && areUiccAppsEnabledOnCard(phoneId)) { + && SubscriptionManagerService.getInstance() + .areUiccAppsEnabledOnCard(phoneId)) { // STATE_NOT_READY is not a final state for when both // 1) It's not an empty profile, and // 2) Its uicc applications are set to enabled. diff --git a/src/java/com/android/internal/telephony/uicc/UiccProfile.java b/src/java/com/android/internal/telephony/uicc/UiccProfile.java index d9ff3f15d6..11f6738652 100644 --- a/src/java/com/android/internal/telephony/uicc/UiccProfile.java +++ b/src/java/com/android/internal/telephony/uicc/UiccProfile.java @@ -527,8 +527,15 @@ public class UiccProfile extends IccCard { private void updateCarrierNameForSubscription(int subId, int nameSource) { /* update display name with carrier override */ - SubscriptionInfo subInfo = SubscriptionController.getInstance().getActiveSubscriptionInfo( - subId, mContext.getOpPackageName(), mContext.getAttributionTag()); + SubscriptionInfo subInfo; + + if (PhoneFactory.isSubscriptionManagerServiceEnabled()) { + subInfo = SubscriptionManagerService.getInstance().getActiveSubscriptionInfo(subId, + mContext.getOpPackageName(), mContext.getAttributionTag()); + } else { + subInfo = SubscriptionController.getInstance().getActiveSubscriptionInfo( + subId, mContext.getOpPackageName(), mContext.getAttributionTag()); + } if (subInfo == null) { return; |