From b0cad32c3cadd0387f6dcd82aade629e6f2f6bee Mon Sep 17 00:00:00 2001 From: Nancy Chen Date: Wed, 8 Oct 2014 18:47:40 -0700 Subject: [PATCH] Add API method to extract subscription ID from phone account (1/3) Since Telephony uses subscription ids and Telecom uses Phone Accounts, there should be an easy way to interface between the two. Since the value of the subscription id and "id" of the phone account should be the same in the case of a SIM phone account, we just need to check that the phone account in question is a SIM phone account and convert the string to a long. This lays in groundwork for the following bugs: Bug: 17925501 Bug: 17917937 Change-Id: I926e969b365d9e9878436302117e8786ec5513b8 --- .../java/android/telecom/TelecomManager.java | 44 +++++++++++++++++++ .../internal/telecom/ITelecomService.aidl | 10 +++++ 2 files changed, 54 insertions(+) diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java index b4d429a19e217..da95af342b79a 100644 --- a/telecomm/java/android/telecom/TelecomManager.java +++ b/telecomm/java/android/telecom/TelecomManager.java @@ -309,6 +309,50 @@ public class TelecomManager { } } + /** + * 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. diff --git a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl index feb09d570e191..8c786731d793a 100644 --- a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl +++ b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl @@ -34,6 +34,16 @@ interface ITelecomService { */ void showInCallScreen(boolean showDialpad); + /** + * @see TelecomServiceImpl#getPhoneAccountIdForSubscriptionId + */ + String getPhoneAccountIdForSubscriptionId(in long subscriptionId); + + /** + * @see TelecomServiceImpl#getSubscriptionIdForPhoneAccount + */ + long getSubscriptionIdForPhoneAccount(in PhoneAccountHandle account); + /** * @see TelecomServiceImpl#getDefaultOutgoingPhoneAccount */