Revert "Additional changes to SubscriptionManager API as per API council."

This reverts commit a63ae799821744f941a1f2d43850372199e075e8.

Change-Id: I30d9b82aeaff5595fe952313b5728fb9f6c2c076
diff --git a/src/com/android/contacts/common/interactions/ImportExportDialogFragment.java b/src/com/android/contacts/common/interactions/ImportExportDialogFragment.java
index 1ea4a5b..0de0be3 100644
--- a/src/com/android/contacts/common/interactions/ImportExportDialogFragment.java
+++ b/src/com/android/contacts/common/interactions/ImportExportDialogFragment.java
@@ -69,8 +69,6 @@
             Contacts.LOOKUP_KEY
     };
 
-    private SubscriptionManager mSubscriptionManager;
-
     /** Preferred way to show this dialog */
     public static void show(FragmentManager fragmentManager, boolean contactsAreAvailable,
             Class callingActivity) {
@@ -114,15 +112,12 @@
         final TelephonyManager manager =
                 (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);
 
-        mSubscriptionManager = SubscriptionManager.from(getActivity());
-
         if (res.getBoolean(R.bool.config_allow_import_from_sdcard)) {
             adapter.add(new AdapterEntry(getString(R.string.import_from_sdcard),
                     R.string.import_from_sdcard));
         }
         if (manager != null && res.getBoolean(R.bool.config_allow_sim_import)) {
-            final List<SubscriptionInfo> subInfoRecords =
-                    mSubscriptionManager.getActiveSubscriptionInfoList();
+            final List<SubscriptionInfo> subInfoRecords = getAllSubInfoList();
             if (subInfoRecords.size() == 1) {
                 adapter.add(new AdapterEntry(getString(R.string.import_from_sim),
                         R.string.import_from_sim, subInfoRecords.get(0).getSubscriptionId()));
@@ -277,6 +272,27 @@
         dismiss();
     }
 
+    /**
+     * Return the same values as {@link SubscriptionManager#getAllSubscriptionInfoList()} without relying
+     * on any hidden methods.
+     */
+    // TODO: replace with a method that doesn't make assumptions about the number of SIM slots
+    private static List<SubscriptionInfo> getAllSubInfoList() {
+        final List<SubscriptionInfo> subInfoRecords0 = SubscriptionManager.getSubscriptionInfoUsingSlotId(0);
+        final List<SubscriptionInfo> subInfoRecords1 = SubscriptionManager.getSubscriptionInfoUsingSlotId(1);
+        if (subInfoRecords0 == null && subInfoRecords1 != null) {
+            return subInfoRecords1;
+        }
+        if (subInfoRecords0 != null && subInfoRecords1 == null) {
+            return subInfoRecords0;
+        }
+        if (subInfoRecords0 == null && subInfoRecords1 == null) {
+            return Collections.EMPTY_LIST;
+        }
+        subInfoRecords0.addAll(subInfoRecords1);
+        return subInfoRecords0;
+    }
+
     private String getSubDescription(SubscriptionInfo record) {
         CharSequence name = record.getDisplayName();
         if (TextUtils.isEmpty(record.getNumber())) {
@@ -298,7 +314,7 @@
         }
 
         public AdapterEntry(String label, int resId) {
-            this(label, resId, SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+            this(label, resId, SubscriptionManager.INVALID_SUB_ID);
         }
     }
 }
diff --git a/src/com/android/contacts/common/util/AccountSelectionUtil.java b/src/com/android/contacts/common/util/AccountSelectionUtil.java
index c378041..da30e89 100644
--- a/src/com/android/contacts/common/util/AccountSelectionUtil.java
+++ b/src/com/android/contacts/common/util/AccountSelectionUtil.java
@@ -74,7 +74,7 @@
                 int resId) {
             // Subscription id is only needed for importing from SIM card. We can safely ignore
             // its value for SD card importing.
-            this(context, accountList, resId, SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+            this(context, accountList, resId, SubscriptionManager.INVALID_SUB_ID);
         }
 
         public void onClick(DialogInterface dialog, int which) {