From ce6bc0e203c42529c1c48df398da102e99e3f2b0 Mon Sep 17 00:00:00 2001 From: Danny Baumann Date: Mon, 25 Jun 2018 10:47:13 +0200 Subject: Allow per-call account selection. Change-Id: Ieac27294f4069b2cff17bb39a0954f74320ad943 --- java/com/android/dialer/util/CallUtil.java | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'java/com/android/dialer/util') diff --git a/java/com/android/dialer/util/CallUtil.java b/java/com/android/dialer/util/CallUtil.java index 89af0b9bb..160a40fd8 100644 --- a/java/com/android/dialer/util/CallUtil.java +++ b/java/com/android/dialer/util/CallUtil.java @@ -24,6 +24,8 @@ import android.telecom.PhoneAccountHandle; import android.telecom.TelecomManager; import com.android.dialer.common.LogUtil; import com.android.dialer.phonenumberutil.PhoneNumberHelper; + +import java.util.ArrayList; import java.util.List; /** Utilities related to calls that can be used by non system apps. */ @@ -88,6 +90,25 @@ public class CallUtil { return VIDEO_CALLING_DISABLED; } + /** + * Returns a list of phone accounts that are able to call to numbers with the supplied scheme + */ + public static List getCallCapablePhoneAccounts(Context context, String scheme) { + if (!PermissionsUtil.hasPermission(context, android.Manifest.permission.READ_PHONE_STATE)) { + return null; + } + TelecomManager tm = (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE); + final ArrayList accounts = new ArrayList<>(); + + for (PhoneAccountHandle handle : tm.getCallCapablePhoneAccounts()) { + final PhoneAccount account = tm.getPhoneAccount(handle); + if (account != null && account.supportsUriScheme(scheme)) { + accounts.add(account); + } + } + return accounts; + } + /** * Determines if one of the call capable phone accounts defined supports video calling. * -- cgit v1.2.3