OSDN Git Service

Move getPhoneCount implementation back to TelephonyManager.
authorMalcolm Chen <refuhoo@google.com>
Thu, 31 Jan 2019 05:19:57 +0000 (21:19 -0800)
committerXiangyu/Malcolm Chen <refuhoo@google.com>
Wed, 20 Feb 2019 00:49:58 +0000 (00:49 +0000)
Moving it inside iTelephony creates problems. Some components call
getPhoneCount during initialization while iTelephony service is not
even running, which will cause phone process to crash.

Bug: 123667461
Test: manual
Change-Id: I51199eaf0bd87055c21fe61af50f4c353137d621
Merged-In: I51199eaf0bd87055c21fe61af50f4c353137d621

telephony/java/android/telephony/TelephonyManager.java
telephony/java/com/android/internal/telephony/ITelephony.aidl

index 1433b2a..510faec 100644 (file)
@@ -363,27 +363,26 @@ public class TelephonyManager {
      * Returns 3 for Tri standby mode.(Tri SIM functionality)
      */
     public int getPhoneCount() {
-        int phoneCount = 0;
-
-        // check for voice and data support, 0 if not supported
-        if (!isVoiceCapable() && !isSmsCapable()) {
-            ConnectivityManager cm = (ConnectivityManager) mContext.getSystemService(
-                    Context.CONNECTIVITY_SERVICE);
-            if (cm != null) {
-                if (!cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)) {
-                    return phoneCount;
+        int phoneCount = 1;
+        switch (getMultiSimConfiguration()) {
+            case UNKNOWN:
+                ConnectivityManager cm = mContext == null ? null : (ConnectivityManager) mContext
+                        .getSystemService(Context.CONNECTIVITY_SERVICE);
+                // check for voice and data support, 0 if not supported
+                if (!isVoiceCapable() && !isSmsCapable() && cm != null
+                        && !cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)) {
+                    phoneCount = 0;
+                } else {
+                    phoneCount = 1;
                 }
-            }
-        }
-
-        phoneCount = 1;
-        try {
-            ITelephony telephony = getITelephony();
-            if (telephony != null) {
-                phoneCount = telephony.getNumOfActiveSims();
-            }
-        } catch (RemoteException ex) {
-            Rlog.e(TAG, "getNumOfActiveSims RemoteException", ex);
+                break;
+            case DSDS:
+            case DSDA:
+                phoneCount = PhoneConstants.MAX_PHONE_COUNT_DUAL_SIM;
+                break;
+            case TSTS:
+                phoneCount = PhoneConstants.MAX_PHONE_COUNT_TRI_SIM;
+                break;
         }
         return phoneCount;
     }
index e6a5558..a51b59a 100644 (file)
@@ -1836,11 +1836,6 @@ interface ITelephony {
      * @hide
      */
     void switchMultiSimConfig(int numOfSims);
-    /**
-     * Get how many modems have been activated on the phone
-     * @hide
-     */
-    int getNumOfActiveSims();
 
     /**
      * Get if reboot is required upon altering modems configurations