diff options
Diffstat (limited to 'java/com/android/dialer/util/CallUtil.java')
-rw-r--r-- | java/com/android/dialer/util/CallUtil.java | 21 |
1 files changed, 21 insertions, 0 deletions
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. */ @@ -89,6 +91,25 @@ public class CallUtil { } /** + * Returns a list of phone accounts that are able to call to numbers with the supplied scheme + */ + public static List<PhoneAccount> 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<PhoneAccount> 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. * * @param context The context. |