Provide @hide API to return merged IMSIs from grouping.
Bug: 135105735
Test: test app. Apply grouping and call the new API, to make sure
it returns correct values.
Change-Id: I6a174391f5b23fd8cc59ab44c59915e551824ab4
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index d0ed9bd..c9664ec 100755
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -44,6 +44,7 @@
import android.os.Looper;
import android.os.Message;
import android.os.Messenger;
+import android.os.ParcelUuid;
import android.os.PersistableBundle;
import android.os.RemoteException;
import android.os.ResultReceiver;
@@ -5052,6 +5053,49 @@
}
@Override
+ public String[] getMergedSubscriberIdsFromGroup(int subId, String callingPackage) {
+ enforceReadPrivilegedPermission("getMergedSubscriberIdsFromGroup");
+
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ final TelephonyManager telephonyManager = mApp.getSystemService(
+ TelephonyManager.class);
+ String subscriberId = telephonyManager.getSubscriberId(subId);
+ if (subscriberId == null) {
+ if (DBG) {
+ log("getMergedSubscriberIdsFromGroup can't find subscriberId for subId "
+ + subId);
+ }
+ return null;
+ }
+
+ final SubscriptionInfo info = SubscriptionController.getInstance()
+ .getSubscriptionInfo(subId);
+ final ParcelUuid groupUuid = info.getGroupUuid();
+ // If it doesn't belong to any group, return just subscriberId of itself.
+ if (groupUuid == null) {
+ return new String[]{subscriberId};
+ }
+
+ // Get all subscriberIds from the group.
+ final List<String> mergedSubscriberIds = new ArrayList<>();
+ final List<SubscriptionInfo> groupInfos = SubscriptionController.getInstance()
+ .getSubscriptionsInGroup(groupUuid, mApp.getOpPackageName());
+ for (SubscriptionInfo subInfo : groupInfos) {
+ subscriberId = telephonyManager.getSubscriberId(subInfo.getSubscriptionId());
+ if (subscriberId != null) {
+ mergedSubscriberIds.add(subscriberId);
+ }
+ }
+
+ return mergedSubscriberIds.toArray(new String[mergedSubscriberIds.size()]);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+
+ }
+ }
+
+ @Override
public boolean setOperatorBrandOverride(int subId, String brand) {
TelephonyPermissions.enforceCallingOrSelfCarrierPrivilege(
subId, "setOperatorBrandOverride");