Merge "add API for getRegisteredPhoneAccounts" into main
diff --git a/core/api/current.txt b/core/api/current.txt
index 236d11b..84fbe1a 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -43243,6 +43243,7 @@
method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.READ_SMS, android.Manifest.permission.READ_PHONE_NUMBERS}, conditional=true) public String getLine1Number(android.telecom.PhoneAccountHandle);
method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_OWN_CALLS) public java.util.List<android.telecom.PhoneAccountHandle> getOwnSelfManagedPhoneAccounts();
method public android.telecom.PhoneAccount getPhoneAccount(android.telecom.PhoneAccountHandle);
+ method @FlaggedApi("com.android.server.telecom.flags.get_registered_phone_accounts") @NonNull public java.util.List<android.telecom.PhoneAccount> getRegisteredPhoneAccounts();
method @NonNull @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List<android.telecom.PhoneAccountHandle> getSelfManagedPhoneAccounts();
method public android.telecom.PhoneAccountHandle getSimCallManager();
method @Nullable public android.telecom.PhoneAccountHandle getSimCallManagerForSubscription(int);
diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java
index 15a978d..08c76af 100644
--- a/telecomm/java/android/telecom/TelecomManager.java
+++ b/telecomm/java/android/telecom/TelecomManager.java
@@ -1434,6 +1434,31 @@
}
/**
+ * This API will return all {@link PhoneAccount}s registered via
+ * {@link TelecomManager#registerPhoneAccount(PhoneAccount)}. If a {@link PhoneAccount} appears
+ * to be missing from the list, Telecom has either unregistered the {@link PhoneAccount}
+ * or the caller registered the {@link PhoneAccount} under a different user and does not
+ * have the {@link android.Manifest.permission#INTERACT_ACROSS_USERS} permission.
+ *
+ * @return all the {@link PhoneAccount}s registered by the caller.
+ */
+ @SuppressLint("RequiresPermission")
+ @FlaggedApi(Flags.FLAG_GET_REGISTERED_PHONE_ACCOUNTS)
+ public @NonNull List<PhoneAccount> getRegisteredPhoneAccounts() {
+ ITelecomService service = getTelecomService();
+ if (service != null) {
+ try {
+ return service.getRegisteredPhoneAccounts(
+ mContext.getOpPackageName(),
+ mContext.getAttributionTag()).getList();
+ } 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.
*
diff --git a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl
index 7dba799e..302a472 100644
--- a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl
+++ b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl
@@ -93,6 +93,12 @@
PhoneAccount getPhoneAccount(in PhoneAccountHandle account, String callingPackage);
/**
+ * @see TelecomManager#getPhoneAccount
+ */
+ ParceledListSlice<PhoneAccount> getRegisteredPhoneAccounts(String callingPackage,
+ String callingFeatureId);
+
+ /**
* @see TelecomManager#getAllPhoneAccountsCount
*/
int getAllPhoneAccountsCount();