aboutsummaryrefslogtreecommitdiff
path: root/src/java/com/android/internal/telephony/uicc
diff options
context:
space:
mode:
authorJack Yu <jackyu@google.com>2022-12-22 03:36:19 -0800
committerJack Yu <jackyu@google.com>2022-12-22 19:42:41 +0000
commit787f7c56e4fd83a9776aff34e00f0f13e3a6420b (patch)
tree118cb64bc01d3f2b463c1f0957b1a1f14e1f0ba4 /src/java/com/android/internal/telephony/uicc
parent2c95c1a82730fca85672c2326a34c9daf17b73b7 (diff)
downloadtelephony-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.java29
-rw-r--r--src/java/com/android/internal/telephony/uicc/UiccProfile.java11
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;