Merge "Add API method to extract subscription ID from phone account (1/3)" into lmp-sprout-dev
diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java
index f3358f8..0d37f09 100644
--- a/telecomm/java/android/telecom/TelecomManager.java
+++ b/telecomm/java/android/telecom/TelecomManager.java
@@ -323,6 +323,50 @@
     }
 
     /**
+     * Return the corresponding PhoneAccount id of a given subscription id.
+     *
+     * @param subscriptionId The value of the subscription id the caller is trying to get a phone
+     * account id for.
+     * @return A string representing the phone account id or null.
+     *
+     * @hide
+     */
+    @SystemApi
+    public String getPhoneAccountIdForSubscriptionId(long subscriptionId) {
+        try {
+            if (isServiceConnected()) {
+                return getTelecomService().getPhoneAccountIdForSubscriptionId(subscriptionId);
+            }
+        } catch (RemoteException e) {
+            Log.e(TAG, "Error calling ITelecomService#getSubscriptionIdForPhoneAccount", e);
+        }
+        return null;
+    }
+
+    /**
+     * Return the subscription id of the PhoneAccount if it exists. This only applies to PSTN
+     * or SIM-based phone accounts. Return -1 otherwise.
+     *
+     * @param accountHandle The {@link PhoneAccountHandle} the caller is trying to get the
+     * subscription id for.
+     * @return The subscription id (a long) or -1 if the phone account is not a SIM or
+     * a subscription id does not exist.
+     *
+     * @hide
+     */
+    @SystemApi
+    public long getSubscriptionIdForPhoneAccount(PhoneAccountHandle accountHandle) {
+        try {
+            if (isServiceConnected()) {
+                return getTelecomService().getSubscriptionIdForPhoneAccount(accountHandle);
+            }
+        } catch (RemoteException e) {
+            Log.e(TAG, "Error calling ITelecomService#getSubscriptionIdForPhoneAccount", e);
+        }
+        return -1;
+    }
+
+    /**
      * Return the {@link PhoneAccount} which is the user-chosen default for making outgoing phone
      * calls with a specified URI scheme.
      * <p>
diff --git a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl
index f1cf885..09ee1cb 100644
--- a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl
+++ b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl
@@ -35,6 +35,16 @@
     void showInCallScreen(boolean showDialpad);
 
     /**
+     * @see TelecomServiceImpl#getPhoneAccountIdForSubscriptionId
+     */
+    String getPhoneAccountIdForSubscriptionId(in long subscriptionId);
+
+    /**
+     * @see TelecomServiceImpl#getSubscriptionIdForPhoneAccount
+     */
+    long getSubscriptionIdForPhoneAccount(in PhoneAccountHandle account);
+
+    /**
      * @see TelecomServiceImpl#getDefaultOutgoingPhoneAccount
      */
     PhoneAccountHandle getDefaultOutgoingPhoneAccount(in String uriScheme);