diff --git a/api/current.txt b/api/current.txt index ba8e448f01579..e95c931f63e92 100644 --- a/api/current.txt +++ b/api/current.txt @@ -39340,6 +39340,7 @@ package android.telecom { method public android.telecom.PhoneAccountHandle getDefaultOutgoingPhoneAccount(java.lang.String); method public java.lang.String getLine1Number(android.telecom.PhoneAccountHandle); method public android.telecom.PhoneAccount getPhoneAccount(android.telecom.PhoneAccountHandle); + method public java.util.List getSelfManagedPhoneAccounts(); method public android.telecom.PhoneAccountHandle getSimCallManager(); method public java.lang.String getVoiceMailNumber(android.telecom.PhoneAccountHandle); method public boolean handleMmi(java.lang.String); diff --git a/api/system-current.txt b/api/system-current.txt index d68e5f5093775..ef675aeaeeb36 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -42778,6 +42778,7 @@ package android.telecom { method public android.telecom.PhoneAccount getPhoneAccount(android.telecom.PhoneAccountHandle); method public java.util.List getPhoneAccountsForPackage(); method public java.util.List getPhoneAccountsSupportingScheme(java.lang.String); + method public java.util.List getSelfManagedPhoneAccounts(); method public android.telecom.PhoneAccountHandle getSimCallManager(); method public java.lang.String getVoiceMailNumber(android.telecom.PhoneAccountHandle); method public boolean handleMmi(java.lang.String); diff --git a/api/test-current.txt b/api/test-current.txt index 29252a8763fed..06028009b5e27 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -39555,6 +39555,7 @@ package android.telecom { method public android.telecom.PhoneAccountHandle getDefaultOutgoingPhoneAccount(java.lang.String); method public java.lang.String getLine1Number(android.telecom.PhoneAccountHandle); method public android.telecom.PhoneAccount getPhoneAccount(android.telecom.PhoneAccountHandle); + method public java.util.List getSelfManagedPhoneAccounts(); method public android.telecom.PhoneAccountHandle getSimCallManager(); method public java.lang.String getVoiceMailNumber(android.telecom.PhoneAccountHandle); method public boolean handleMmi(java.lang.String); diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java index 8bfe4131d7cbc..1874d8d04723e 100644 --- a/telecomm/java/android/telecom/TelecomManager.java +++ b/telecomm/java/android/telecom/TelecomManager.java @@ -754,6 +754,32 @@ public class TelecomManager { return getCallCapablePhoneAccounts(false); } + /** + * Returns a list of {@link PhoneAccountHandle}s for self-managed {@link ConnectionService}s. + *

+ * 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. + *

+ * 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(android.Manifest.permission.READ_PHONE_STATE) + public List getSelfManagedPhoneAccounts() { + try { + if (isServiceConnected()) { + return getTelecomService().getSelfManagedPhoneAccounts(mContext.getOpPackageName()); + } + } catch (RemoteException e) { + Log.e(TAG, "Error calling ITelecomService#getSelfManagedPhoneAccounts()", e); + } + return new ArrayList<>(); + } + /** * Returns a list of {@link PhoneAccountHandle}s including those which have not been enabled * by the user. diff --git a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl index 87402243a4523..8ebac2c6273a7 100644 --- a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl +++ b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl @@ -58,6 +58,11 @@ interface ITelecomService { List getCallCapablePhoneAccounts( boolean includeDisabledAccounts, String callingPackage); + /** + * @see TelecomServiceImpl#getSelfManagedPhoneAccounts + */ + List getSelfManagedPhoneAccounts(String callingPackage); + /** * @see TelecomManager#getPhoneAccountsSupportingScheme */