Change to query ICC file handler directly from IccCard instead of from Phone obj.
Bug: 18115115
Change-Id: I34f6bb449d76aa5bc60fff8c0e070a0631e9d316
diff --git a/src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java b/src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java
index f17bef8..0885b09 100644
--- a/src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java
+++ b/src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java
@@ -320,8 +320,18 @@
logd("queryIccId: slotid=" + slotId);
if (mFh[slotId] == null) {
logd("Getting IccFileHandler");
- mFh[slotId] = ((PhoneProxy)mPhone[slotId]).getIccFileHandler();
+ if (mPhone[slotId].getIccCard() != null) {
+ mFh[slotId] = mPhone[slotId].getIccCard().getIccFileHandler();
+ }
+ /** Just in case file handler cannot be obtained from IccCard directly, we can use the
+ * earlier way of getting it from phone */
+ // TODO remove this if block
+ if (mFh[slotId] == null) {
+ logd("queryIccId: Could not get IccFileHandler directly from IccCard");
+ mFh[slotId] = ((PhoneProxy) mPhone[slotId]).getIccFileHandler();
+ }
}
+
if (mFh[slotId] != null) {
String iccId = mIccId[slotId];
if (iccId == null) {