From 4e1184dc2698209e7885cb37ff5eaec75ce804b2 Mon Sep 17 00:00:00 2001 From: Thomas Stuart Date: Fri, 28 Jan 2022 23:06:57 +0000 Subject: decouple TelecomManager#getSelfManagedPhoneAccounts (2/3) Recently TelecomManager#getSelfManagedPhoneAccounts was updated to allow callingPackages to get their PA's. However, API council noted there was ambiguity with what was returned from the method. Thus the method has been decoupled into 2 methods. bug: 216640181 Test: CTS Change-Id: Idbcb4740f5a5d7fdf5bedb9d9f6173eef0cb3f17 --- telecomm/java/android/telecom/TelecomManager.java | 51 ++++++++++++++++------- 1 file changed, 35 insertions(+), 16 deletions(-) (limited to 'telecomm/java/android') diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java index f43e5aacad33..df114dbabe5b 100644 --- a/telecomm/java/android/telecom/TelecomManager.java +++ b/telecomm/java/android/telecom/TelecomManager.java @@ -1292,31 +1292,22 @@ public class TelecomManager { } /** - * Returns a list of {@link PhoneAccountHandle}s for self-managed {@link ConnectionService}s. + * Returns a list of {@link PhoneAccountHandle}s for all self-managed + * {@link ConnectionService}s owned by the calling {@link UserHandle}. *

* Self-Managed {@link ConnectionService}s have a {@link PhoneAccount} with * {@link PhoneAccount#CAPABILITY_SELF_MANAGED}. *

* Requires permission {@link android.Manifest.permission#READ_PHONE_STATE}, or that the caller - * is the default dialer app to get all phone account handles. - *

- * If the caller doesn't meet any of the above requirements and has {@link - * android.Manifest.permission#MANAGE_OWN_CALLS}, the caller can get only the phone account - * handles they have registered. + * is the default dialer app. *

- * A {@link SecurityException} will be thrown if the caller is not the default dialer - * or the caller does not have at least one of the following permissions: - * {@link android.Manifest.permission#READ_PHONE_STATE} permission, - * {@link android.Manifest.permission#MANAGE_OWN_CALLS} permission + * A {@link SecurityException} will be thrown if a called is not the default dialer, or lacks + * the {@link android.Manifest.permission#READ_PHONE_STATE} permission. * * @return A list of {@code PhoneAccountHandle} objects. */ - @RequiresPermission(anyOf = { - READ_PRIVILEGED_PHONE_STATE, - android.Manifest.permission.READ_PHONE_STATE, - android.Manifest.permission.MANAGE_OWN_CALLS - }) - public List getSelfManagedPhoneAccounts() { + @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) + public @NonNull List getSelfManagedPhoneAccounts() { ITelecomService service = getTelecomService(); if (service != null) { try { @@ -1329,6 +1320,34 @@ public class TelecomManager { return new ArrayList<>(); } + /** + * Returns a list of {@link PhoneAccountHandle}s owned by the calling self-managed + * {@link ConnectionService}. + *

+ * Self-Managed {@link ConnectionService}s have a {@link PhoneAccount} with + * {@link PhoneAccount#CAPABILITY_SELF_MANAGED}. + *

+ * Requires permission {@link android.Manifest.permission#MANAGE_OWN_CALLS} + *

+ * A {@link SecurityException} will be thrown if a caller lacks the + * {@link android.Manifest.permission#MANAGE_OWN_CALLS} permission. + * + * @return A list of {@code PhoneAccountHandle} objects. + */ + @RequiresPermission(Manifest.permission.MANAGE_OWN_CALLS) + public @NonNull List getOwnSelfManagedPhoneAccounts() { + ITelecomService service = getTelecomService(); + if (service != null) { + try { + return service.getOwnSelfManagedPhoneAccounts(mContext.getOpPackageName(), + mContext.getAttributionTag()); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + throw new IllegalStateException("Telecom is not available"); + } + /** * Returns a list of {@link PhoneAccountHandle}s including those which have not been enabled * by the user. -- cgit v1.2.3-59-g8ed1b