getMergedSubscriberIds considers subId
This logic can be simplified a lot but for stability we will make the
smallest change, and follow up in another CL with simplification logic.
Bug: 131189269
Test: manually verified subscription group includes subId
Change-Id: Idf09e267ff3f4e27a2751f2b5220d7213bc09983
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 495bee3..924d656 100755
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -4980,7 +4980,7 @@
}
@Override
- public String[] getMergedSubscriberIds(String callingPackage) {
+ public String[] getMergedSubscriberIds(int subId, String callingPackage) {
// This API isn't public, so no need to provide a valid subscription ID - we're not worried
// about carrier-privileged callers not having access.
if (!TelephonyPermissions.checkCallingOrSelfReadPhoneState(
@@ -4989,6 +4989,9 @@
return null;
}
+ // Clear calling identity, when calling TelephonyManager, because callerUid must be
+ // the process, where TelephonyManager was instantiated.
+ // Otherwise AppOps check will fail.
final long identity = Binder.clearCallingIdentity();
try {
final Context context = mApp;
@@ -4997,12 +5000,10 @@
// Figure out what subscribers are currently active
final ArraySet<String> activeSubscriberIds = new ArraySet<>();
- // Clear calling identity, when calling TelephonyManager, because callerUid must be
- // the process, where TelephonyManager was instantiated.
- // Otherwise AppOps check will fail.
- final int[] subIds = sub.getActiveSubscriptionIdList();
- for (int subId : subIds) {
+ // Only consider subs which match the current subId
+ // This logic can be simplified. See b/131189269 for progress.
+ if (isActiveSubscription(subId)) {
activeSubscriberIds.add(tele.getSubscriberId(subId));
}