Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e6c7587d authored by Nancy Chen's avatar Nancy Chen
Browse files

Add API method to extract subscription ID from phone account (2/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: Iee044e3d6b88f598eefd3bafd01d2ca3b5ac0bb8
parent 75423efe
Loading
Loading
Loading
Loading
+32 −0
Original line number Diff line number Diff line
@@ -112,6 +112,38 @@ public final class PhoneAccountRegistrar {
        read();
    }

    /**
     * Retrieves the phone account id for a given subscription id if it exists. Subscription ids
     * apply only to PSTN/SIM card phone accounts so all other accounts should not have a
     * subscription id.
     * @param subscriptionId The subscription id for which to construct the phone account id
     * @return The string representing the phone account id for the subscription id.
     */

    public String getPhoneAccountIdForSubscriptionId(long subscriptionId) {
        return String.valueOf(subscriptionId);
    }

    /**
     * Retrieves the subscription id for a given phone account if it exists. Subscription ids
     * apply only to PSTN/SIM card phone accounts so all other accounts should not have a
     * subscription id.
     * @param accountHandle The handle for the phone account for which to retrieve the
     * subscription id.
     * @return The value of the subscription id (long) or -1 if it does not exist or is not valid.
     */

    public long getSubscriptionIdForPhoneAccount(PhoneAccountHandle accountHandle) {
        PhoneAccount account = getPhoneAccount(accountHandle);
        if (account == null || !account.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION) ||
                !TextUtils.isDigitsOnly(accountHandle.getId())) {
            // Since no decimals or negative numbers can be valid subscription ids, only a string of
            // numbers can be subscription id
            return -1;
        }
        return Long.parseLong(accountHandle.getId());
    }

    /**
     * Retrieves the default outgoing phone account supporting the specified uriScheme.
     * @param uriScheme The URI scheme for the outgoing call.
+20 −0
Original line number Diff line number Diff line
@@ -151,6 +151,26 @@ public class TelecomServiceImpl extends ITelecomService.Stub {
    // Implementation of the ITelecomService interface.
    //

    @Override
    public String getPhoneAccountIdForSubscriptionId(long subscriptionId) {
        try {
            return mPhoneAccountRegistrar.getPhoneAccountIdForSubscriptionId(subscriptionId);
        } catch (Exception e) {
            Log.e(this, e, "getPhoneAccountIdForSubscriptionId");
            throw e;
        }
    }

    @Override
    public long getSubscriptionIdForPhoneAccount(PhoneAccountHandle accountHandle) {
        try {
            return mPhoneAccountRegistrar.getSubscriptionIdForPhoneAccount(accountHandle);
        } catch (Exception e) {
            Log.e(this, e, "getSubscriptionIdForPhoneAccount");
            throw e;
        }
    }

    @Override
    public PhoneAccountHandle getDefaultOutgoingPhoneAccount(String uriScheme) {
        try {