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) {