summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/TelephonyRegistry.java2
-rw-r--r--telephony/java/android/telephony/SubscriptionManager.java17
-rw-r--r--telephony/java/android/telephony/TelephonyManager.java6
3 files changed, 19 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java
index 52eb45f819f1..611444153791 100644
--- a/services/core/java/com/android/server/TelephonyRegistry.java
+++ b/services/core/java/com/android/server/TelephonyRegistry.java
@@ -382,7 +382,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
mContext = context;
mBatteryStats = BatteryStatsService.getService();
- int numPhones = TelephonyManager.getDefault().getPhoneCount();
+ int numPhones = TelephonyManager.getDefault().getMaxPhoneCount();
if (DBG) log("TelephonyRegistry: ctor numPhones=" + numPhones);
mNumPhones = numPhones;
mCallState = new int[numPhones];
diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java
index 519a95406312..003dc4b117be 100644
--- a/telephony/java/android/telephony/SubscriptionManager.java
+++ b/telephony/java/android/telephony/SubscriptionManager.java
@@ -2085,13 +2085,26 @@ public class SubscriptionManager {
/** @hide */
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
public static boolean isValidSlotIndex(int slotIndex) {
- return slotIndex >= 0 && slotIndex < TelephonyManager.getDefault().getSimCount();
+ return slotIndex >= 0 && slotIndex < TelephonyManager.getDefault().getMaxPhoneCount();
}
/** @hide */
@UnsupportedAppUsage
public static boolean isValidPhoneId(int phoneId) {
- return phoneId >= 0 && phoneId < TelephonyManager.getDefault().getPhoneCount();
+ return phoneId >= 0 && phoneId < TelephonyManager.getDefault().getMaxPhoneCount();
+ }
+
+ /**
+ * When getPhoneCount and getMaxPhoneCount return different value, isValidPhoneId being true
+ * doesn't mean the phoneId has a corresponding active slot / logical modem. If a DSDS capable
+ * device is in single SIM mode, phoneId=1 is valid but not active.
+ *
+ * TODO: b/139642279 combine with SubscriptionManager#isValidPhoneId when phone objects
+ * are dynamically allocated instead of always based on getMaxPhoneCount.
+ * @hide
+ */
+ public static boolean isActivePhoneId(int slotIndex) {
+ return slotIndex < TelephonyManager.getDefault().getPhoneCount();
}
/** @hide */
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 020fe2e6c9dc..57ebc685d747 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -404,7 +404,7 @@ public class TelephonyManager {
* TODO: b/139642279 publicize and rename.
* @hide
*/
- public static int getMaxPhoneCount() {
+ public int getMaxPhoneCount() {
// TODO: b/139642279 when turning on this feature, remove dependency of
// PROPERTY_REBOOT_REQUIRED_ON_MODEM_CHANGE and always return result based on
// PROPERTY_MAX_ACTIVE_MODEMS.
@@ -413,9 +413,9 @@ public class TelephonyManager {
if (rebootRequired.equals("false")) {
// If no reboot is required, return max possible active modems.
return SystemProperties.getInt(
- TelephonyProperties.PROPERTY_MAX_ACTIVE_MODEMS, getDefault().getPhoneCount());
+ TelephonyProperties.PROPERTY_MAX_ACTIVE_MODEMS, getPhoneCount());
} else {
- return getDefault().getPhoneCount();
+ return getPhoneCount();
}
}