Update Multi-SIM setting to use getSubIdForPhoneAccount API.

Settings app should not be parsing the subId direction from the phone
account.  Instead this CL updates the settings app to use a new API to
grab the sub ID.

Change-Id: Iefd1831b04c061168fa2b135a2d296a27e3d4e92
diff --git a/src/com/android/settings/sim/SimDialogActivity.java b/src/com/android/settings/sim/SimDialogActivity.java
index 3170dae..e9234d7 100644
--- a/src/com/android/settings/sim/SimDialogActivity.java
+++ b/src/com/android/settings/sim/SimDialogActivity.java
@@ -29,6 +29,7 @@
 import android.telecom.TelecomManager;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.KeyEvent;
@@ -138,17 +139,14 @@
 
     private PhoneAccountHandle subscriptionIdToPhoneAccountHandle(final int subId) {
         final TelecomManager telecomManager = TelecomManager.from(this);
+        final TelephonyManager telephonyManager = TelephonyManager.from(this);
         final Iterator<PhoneAccountHandle> phoneAccounts =
                 telecomManager.getCallCapablePhoneAccounts().listIterator();
 
         while (phoneAccounts.hasNext()) {
             final PhoneAccountHandle phoneAccountHandle = phoneAccounts.next();
             final PhoneAccount phoneAccount = telecomManager.getPhoneAccount(phoneAccountHandle);
-            final String phoneAccountId = phoneAccountHandle.getId();
-
-            if (phoneAccount.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION)
-                    && TextUtils.isDigitsOnly(phoneAccountId)
-                    && Integer.parseInt(phoneAccountId) == subId){
+            if (subId == telephonyManager.getSubIdForPhoneAccount(phoneAccount)) {
                 return phoneAccountHandle;
             }
         }
@@ -210,6 +208,7 @@
         ArrayList<SubscriptionInfo> callsSubInfoList = new ArrayList<SubscriptionInfo>();
         if (id == CALLS_PICK) {
             final TelecomManager telecomManager = TelecomManager.from(context);
+            final TelephonyManager telephonyManager = TelephonyManager.from(context);
             final Iterator<PhoneAccountHandle> phoneAccounts =
                     telecomManager.getCallCapablePhoneAccounts().listIterator();
 
@@ -219,13 +218,9 @@
                 final PhoneAccount phoneAccount =
                         telecomManager.getPhoneAccount(phoneAccounts.next());
                 list.add((String)phoneAccount.getLabel());
-                // Added check to add entry into callsSubInforList only if phoneAccountId is int
-                // Todo : Might have to change it later based on b/18904714
-                if (phoneAccount.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION) &&
-                        TextUtils.isDigitsOnly(phoneAccount.getAccountHandle().getId())) {
-                    final String phoneAccountId = phoneAccount.getAccountHandle().getId();
-                    final SubscriptionInfo sir = Utils.findRecordBySubId(context,
-                            Integer.parseInt(phoneAccountId));
+                int subId = telephonyManager.getSubIdForPhoneAccount(phoneAccount);
+                if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+                    final SubscriptionInfo sir = Utils.findRecordBySubId(context, subId);
                     callsSubInfoList.add(sir);
                 } else {
                     callsSubInfoList.add(null);