Fix ArrayIndexOutOfBoundsException in IccNetworkDepersonalizationPanel

The arrays in the class IccNetworkDepersonalizationPanel were created with the length by calling the api "TelephonyManager#getSimCount".
When the active modems count was changed, the length of the arrays sShowingDialog and sNdpPanel had not been updated.

Initialized the array length by calling the API "TelephonyManager#getSupportedModemCount" instead.

Bug: 156425075
Test: manual
Change-Id: Id31ac22a1581daf68769c967494dab05c02983db
diff --git a/src/com/android/phone/IccNetworkDepersonalizationPanel.java b/src/com/android/phone/IccNetworkDepersonalizationPanel.java
index 7d854cd..a26225e 100644
--- a/src/com/android/phone/IccNetworkDepersonalizationPanel.java
+++ b/src/com/android/phone/IccNetworkDepersonalizationPanel.java
@@ -22,8 +22,6 @@
 import android.os.Handler;
 import android.os.Message;
 import android.os.PersistableBundle;
-import android.os.RemoteException;
-import android.os.ServiceManager;
 import android.telephony.CarrierConfigManager;
 import android.telephony.TelephonyManager;
 import android.text.Editable;
@@ -40,7 +38,6 @@
 import android.widget.TextView;
 
 import com.android.internal.telephony.Phone;
-import com.android.internal.telephony.uicc.IccCardApplicationStatus;
 import com.android.internal.telephony.uicc.IccCardApplicationStatus.PersoSubState;
 
 /**
@@ -58,7 +55,7 @@
      * Ensures only a single instance of the dialog is visible.
      */
     private static boolean [] sShowingDialog =
-            new boolean[TelephonyManager.getDefault().getSimCount()];
+            new boolean[TelephonyManager.getDefault().getSupportedModemCount()];
 
     //debug constants
     private static final boolean DBG = false;
@@ -69,7 +66,8 @@
     private Phone mPhone;
     private int mPersoSubtype;
     private static IccNetworkDepersonalizationPanel [] sNdpPanel =
-            new IccNetworkDepersonalizationPanel[TelephonyManager.getDefault().getSimCount()];
+            new IccNetworkDepersonalizationPanel[
+                    TelephonyManager.getDefault().getSupportedModemCount()];
 
     //UI elements
     private EditText     mPinEntry;
@@ -94,6 +92,10 @@
      */
     public static void showDialog(Phone phone, int subType) {
         int phoneId = phone == null ? 0: phone.getPhoneId();
+        if (phoneId >= sShowingDialog.length) {
+            Log.e(TAG, "[IccNetworkDepersonalizationPanel] showDialog; invalid phoneId" + phoneId);
+            return;
+        }
         if (sShowingDialog[phoneId]) {
             Log.i(TAG, "[IccNetworkDepersonalizationPanel] - showDialog; skipped already shown.");
             return;
@@ -106,6 +108,10 @@
     }
 
     public static void dialogDismiss(int phoneId) {
+        if (phoneId >= sShowingDialog.length) {
+            Log.e(TAG, "[IccNetworkDepersonalizationPanel] - dismiss; invalid phoneId " + phoneId);
+            return;
+        }
         if (sNdpPanel[phoneId] != null && sShowingDialog[phoneId]) {
             sNdpPanel[phoneId].dismiss();
         }
@@ -222,6 +228,10 @@
         super.onStop();
         Log.i(TAG, "[IccNetworkDepersonalizationPanel] - showDialog; hiding dialog.");
         int phoneId = mPhone == null ? 0 : mPhone.getPhoneId();
+        if (phoneId >= sShowingDialog.length) {
+            Log.e(TAG, "[IccNetworkDepersonalizationPanel] - onStop; invalid phoneId " + phoneId);
+            return;
+        }
         sShowingDialog[phoneId] = false;
     }