# Print output for @column tags ?> PhoneAccount - Android SDK | Android Developers

Most visited

Recently visited

PhoneAccount

public final class PhoneAccount
extends Object implements Parcelable

java.lang.Object
   ↳ android.telecom.PhoneAccount


Represents a distinct method to place or receive a phone call. Apps which can place calls and want those calls to be integrated into the dialer and in-call UI should build an instance of this class and register it with the system using TelecomManager.

TelecomManager uses registered PhoneAccounts to present the user with alternative options when placing a phone call. When building a PhoneAccount, the app should supply a valid PhoneAccountHandle that references the connection service implementation Telecom will use to interact with the app.

Summary

Nested classes

class PhoneAccount.Builder

Helper class for creating a PhoneAccount

Constants

int CAPABILITY_ADHOC_CONFERENCE_CALLING

An adhoc conference call is established by providing a list of addresses to TelecomManager#startConference(List<Uri>, int videoState) where the ConnectionService is responsible for connecting all indicated participants to a conference simultaneously.

int CAPABILITY_CALL_PROVIDER

Flag indicating that this PhoneAccount can make phone calls in place of traditional SIM-based telephony calls.

int CAPABILITY_CALL_SUBJECT

Flag indicating that this PhoneAccount supports a subject for Calls.

int CAPABILITY_CONNECTION_MANAGER

Flag indicating that this PhoneAccount can act as a connection manager for other connections.

int CAPABILITY_PLACE_EMERGENCY_CALLS

Flag indicating that this PhoneAccount is capable of placing emergency calls.

int CAPABILITY_RTT

Flag indicating that this PhoneAccount is capable of making a call with an RTT (Real-time text) session.

int CAPABILITY_SELF_MANAGED

Flag indicating that this PhoneAccount is responsible for managing its own Connections.

int CAPABILITY_SIM_SUBSCRIPTION

Flag indicating that this PhoneAccount represents a built-in PSTN SIM subscription.

int CAPABILITY_SUPPORTS_VIDEO_CALLING

Flag indicating that this PhoneAccount supports video calling.

int CAPABILITY_VIDEO_CALLING

Flag indicating that this PhoneAccount is currently able to place video calls.

int CAPABILITY_VIDEO_CALLING_RELIES_ON_PRESENCE

Flag indicating that for this PhoneAccount, the ability to make a video call to a number relies on presence.

String EXTRA_CALL_SUBJECT_CHARACTER_ENCODING

PhoneAccount extras key (see PhoneAccount#getExtras()) which determines the character encoding to be used when determining the length of messages.

String EXTRA_CALL_SUBJECT_MAX_LENGTH

PhoneAccount extras key (see PhoneAccount#getExtras()) which determines the maximum permitted length of a call subject specified via the TelecomManager#EXTRA_CALL_SUBJECT extra on an Intent.ACTION_CALL intent.

String EXTRA_LOG_SELF_MANAGED_CALLS

Boolean PhoneAccount extras key (see PhoneAccount#getExtras()) which indicates whether a Self-Managed PhoneAccount should log its calls to the call log.

String EXTRA_SUPPORTS_HANDOVER_FROM

Boolean PhoneAccount extras key (see PhoneAccount#getExtras()) which indicates whether this PhoneAccount is capable of supporting a request to handover a connection from this PhoneAccount to another PhoneAccount.

String EXTRA_SUPPORTS_HANDOVER_TO

Boolean PhoneAccount extras key (see PhoneAccount#getExtras()) which indicates whether this PhoneAccount is capable of supporting a request to handover a connection (see android.telecom.Call#handoverTo()) to this PhoneAccount from a PhoneAccount specifying EXTRA_SUPPORTS_HANDOVER_FROM.

int NO_HIGHLIGHT_COLOR

Indicating no hightlight color is set.

int NO_RESOURCE_ID

Indicating no resource ID is set.

String SCHEME_SIP

URI scheme for SIP URIs.

String SCHEME_TEL

URI scheme for telephone number URIs.

String SCHEME_VOICEMAIL

URI scheme for voicemail URIs.

Inherited constants

Fields

public static final Creator<PhoneAccount> CREATOR

Public methods

static PhoneAccount.Builder builder(PhoneAccountHandle accountHandle, CharSequence label)
int describeContents()

Describe the kinds of special objects contained in this Parcelable instance's marshaled representation.

boolean equals(Object o)

Indicates whether some other object is "equal to" this one.

PhoneAccountHandle getAccountHandle()

The unique identifier of this PhoneAccount.

Uri getAddress()

The address (e.g., a phone number) associated with this PhoneAccount.

int getCapabilities()

The capabilities of this PhoneAccount.

Bundle getExtras()

The extras associated with this PhoneAccount.

int getHighlightColor()

A highlight color to use in displaying information about this PhoneAccount.

Icon getIcon()

The icon to represent this PhoneAccount.

CharSequence getLabel()

A short label describing a PhoneAccount.

CharSequence getShortDescription()

A short paragraph describing this PhoneAccount.

Uri getSubscriptionAddress()

The raw callback number used for this PhoneAccount, as distinct from getAddress().

List<String> getSupportedUriSchemes()

The URI schemes supported by this PhoneAccount.

boolean hasCapabilities(int capability)

Determines if this PhoneAccount has a capabilities specified by the passed in bit mask.

int hashCode()

Returns a hash code value for the object.

boolean isEnabled()

Indicates whether the user has enabled this PhoneAccount or not.

boolean supportsUriScheme(String uriScheme)

Determines if the PhoneAccount supports calls to/from addresses with a specified URI scheme.

PhoneAccount.Builder toBuilder()

Returns a builder initialized with the current PhoneAccount instance.

String toString()

Returns a string representation of the object.

void writeToParcel(Parcel out, int flags)

Flatten this object in to a Parcel.

Inherited methods

Constants

CAPABILITY_ADHOC_CONFERENCE_CALLING

public static final int CAPABILITY_ADHOC_CONFERENCE_CALLING

An adhoc conference call is established by providing a list of addresses to TelecomManager#startConference(List<Uri>, int videoState) where the ConnectionService is responsible for connecting all indicated participants to a conference simultaneously. This is in contrast to conferences formed by merging calls together (e.g. using Call.mergeConference()).

Constant Value: 16384 (0x00004000)

CAPABILITY_CALL_PROVIDER

public static final int CAPABILITY_CALL_PROVIDER

Flag indicating that this PhoneAccount can make phone calls in place of traditional SIM-based telephony calls. This account will be treated as a distinct method for placing calls alongside the traditional SIM-based telephony stack. This flag is distinct from CAPABILITY_CONNECTION_MANAGER in that it is not allowed to manage or place calls from the built-in telephony stack.

See getCapabilities()

Constant Value: 2 (0x00000002)

CAPABILITY_CALL_SUBJECT

public static final int CAPABILITY_CALL_SUBJECT

Flag indicating that this PhoneAccount supports a subject for Calls. This means a caller is able to specify a short subject line for an outgoing call. A capable receiving device displays the call subject on the incoming call screen.

See getCapabilities()

Constant Value: 64 (0x00000040)

CAPABILITY_CONNECTION_MANAGER

public static final int CAPABILITY_CONNECTION_MANAGER

Flag indicating that this PhoneAccount can act as a connection manager for other connections. The ConnectionService associated with this PhoneAccount will be allowed to manage phone calls including using its own proprietary phone-call implementation (like VoIP calling) to make calls instead of the telephony stack.

When a user opts to place a call using the SIM-based telephony stack, the ConnectionService associated with this PhoneAccount will be attempted first if the user has explicitly selected it to be used as the default connection manager.

See getCapabilities()

Constant Value: 1 (0x00000001)

CAPABILITY_PLACE_EMERGENCY_CALLS

public static final int CAPABILITY_PLACE_EMERGENCY_CALLS

Flag indicating that this PhoneAccount is capable of placing emergency calls. By default all PSTN PhoneAccounts are capable of placing emergency calls.

See getCapabilities()

Constant Value: 16 (0x00000010)

CAPABILITY_RTT

public static final int CAPABILITY_RTT

Flag indicating that this PhoneAccount is capable of making a call with an RTT (Real-time text) session. When set, Telecom will attempt to open an RTT session on outgoing calls that specify that they should be placed with an RTT session , and the in-call app will be displayed with text entry fields for RTT. Likewise, the in-call app can request that an RTT session be opened during a call if this bit is set.

Constant Value: 4096 (0x00001000)

CAPABILITY_SELF_MANAGED

public static final int CAPABILITY_SELF_MANAGED

Flag indicating that this PhoneAccount is responsible for managing its own Connections. This type of PhoneAccount is ideal for use with standalone calling apps which do not wish to use the default phone app for Connection UX, but which want to leverage the call and audio routing capabilities of the Telecom framework.

When set, Connections created by the self-managed ConnectionService will not be surfaced to implementations of the InCallService API. Thus it is the responsibility of a self-managed ConnectionService to provide a user interface for its Connections.

Self-managed Connections will, however, be displayed on connected Bluetooth devices.

Constant Value: 2048 (0x00000800)

CAPABILITY_SIM_SUBSCRIPTION

public static final int CAPABILITY_SIM_SUBSCRIPTION

Flag indicating that this PhoneAccount represents a built-in PSTN SIM subscription.

Only the Android framework can register a PhoneAccount having this capability.

See getCapabilities()

Constant Value: 4 (0x00000004)

CAPABILITY_SUPPORTS_VIDEO_CALLING

public static final int CAPABILITY_SUPPORTS_VIDEO_CALLING

Flag indicating that this PhoneAccount supports video calling. This is not an indication that the PhoneAccount is currently able to make a video call, but rather that it has the ability to make video calls (but not necessarily at this time).

Whether a PhoneAccount can make a video call is ultimately controlled by CAPABILITY_VIDEO_CALLING, which indicates whether the PhoneAccount is currently capable of making a video call. Consider a case where, for example, a PhoneAccount supports making video calls (e.g. CAPABILITY_SUPPORTS_VIDEO_CALLING), but a current lack of network connectivity prevents video calls from being made (e.g. CAPABILITY_VIDEO_CALLING).

See getCapabilities()

Constant Value: 1024 (0x00000400)

CAPABILITY_VIDEO_CALLING

public static final int CAPABILITY_VIDEO_CALLING

Flag indicating that this PhoneAccount is currently able to place video calls.

See also CAPABILITY_SUPPORTS_VIDEO_CALLING which indicates whether the PhoneAccount supports placing video calls.

See getCapabilities()

Constant Value: 8 (0x00000008)

CAPABILITY_VIDEO_CALLING_RELIES_ON_PRESENCE

public static final int CAPABILITY_VIDEO_CALLING_RELIES_ON_PRESENCE

Flag indicating that for this PhoneAccount, the ability to make a video call to a number relies on presence. Should only be set if the PhoneAccount also has CAPABILITY_VIDEO_CALLING.

When set, the ConnectionService is responsible for toggling the ContactsContract.DataColumns.CARRIER_PRESENCE_VT_CAPABLE bit on the ContactsContract.DataColumns.CARRIER_PRESENCE column to indicate whether a contact's phone number supports video calling.

See getCapabilities()

Constant Value: 256 (0x00000100)

EXTRA_CALL_SUBJECT_CHARACTER_ENCODING

public static final String EXTRA_CALL_SUBJECT_CHARACTER_ENCODING

PhoneAccount extras key (see PhoneAccount#getExtras()) which determines the character encoding to be used when determining the length of messages. The user interface can use this when determining the number of characters the user may type in a call subject. If empty-string, the call subject message size limit will be enforced on a 1:1 basis. That is, each character will count towards the messages size limit as a single character. If a character encoding is specified, the message size limit will be based on the number of bytes in the message per the specified encoding. See EXTRA_CALL_SUBJECT_MAX_LENGTH for more information on the call subject maximum length.

Constant Value: "android.telecom.extra.CALL_SUBJECT_CHARACTER_ENCODING"

EXTRA_CALL_SUBJECT_MAX_LENGTH

public static final String EXTRA_CALL_SUBJECT_MAX_LENGTH

PhoneAccount extras key (see PhoneAccount#getExtras()) which determines the maximum permitted length of a call subject specified via the TelecomManager#EXTRA_CALL_SUBJECT extra on an Intent.ACTION_CALL intent. Ultimately a ConnectionService is responsible for enforcing the maximum call subject length when sending the message, however this extra is provided so that the user interface can proactively limit the length of the call subject as the user types it.

Constant Value: "android.telecom.extra.CALL_SUBJECT_MAX_LENGTH"

EXTRA_LOG_SELF_MANAGED_CALLS

public static final String EXTRA_LOG_SELF_MANAGED_CALLS

Boolean PhoneAccount extras key (see PhoneAccount#getExtras()) which indicates whether a Self-Managed PhoneAccount should log its calls to the call log. Self-Managed PhoneAccounts are responsible for their own notifications, so the system will not create a notification when a missed call is logged.

By default, Self-Managed PhoneAccounts do not log their calls to the call log. Setting this extra to true provides a means for them to log their calls.

Note: Only calls where the Call.Details#getHandle() Uri#getScheme() is SCHEME_SIP or SCHEME_TEL will be logged at the current time.

Constant Value: "android.telecom.extra.LOG_SELF_MANAGED_CALLS"

EXTRA_SUPPORTS_HANDOVER_FROM

public static final String EXTRA_SUPPORTS_HANDOVER_FROM

Boolean PhoneAccount extras key (see PhoneAccount#getExtras()) which indicates whether this PhoneAccount is capable of supporting a request to handover a connection from this PhoneAccount to another PhoneAccount. (see android.telecom.Call#handoverTo()) which specifies EXTRA_SUPPORTS_HANDOVER_TO.

A handover request is initiated by the user from the default dialer app to indicate a desire to handover a call from one PhoneAccount/ConnectionService to another.

Constant Value: "android.telecom.extra.SUPPORTS_HANDOVER_FROM"

EXTRA_SUPPORTS_HANDOVER_TO

public static final String EXTRA_SUPPORTS_HANDOVER_TO

Boolean PhoneAccount extras key (see PhoneAccount#getExtras()) which indicates whether this PhoneAccount is capable of supporting a request to handover a connection (see android.telecom.Call#handoverTo()) to this PhoneAccount from a PhoneAccount specifying EXTRA_SUPPORTS_HANDOVER_FROM.

A handover request is initiated by the user from the default dialer app to indicate a desire to handover a call from one PhoneAccount/ConnectionService to another.

Constant Value: "android.telecom.extra.SUPPORTS_HANDOVER_TO"

NO_HIGHLIGHT_COLOR

public static final int NO_HIGHLIGHT_COLOR

Indicating no hightlight color is set.

Constant Value: 0 (0x00000000)

NO_RESOURCE_ID

public static final int NO_RESOURCE_ID

Indicating no resource ID is set.

Constant Value: -1 (0xffffffff)

SCHEME_SIP

public static final String SCHEME_SIP

URI scheme for SIP URIs.

Constant Value: "sip"

SCHEME_TEL

public static final String SCHEME_TEL

URI scheme for telephone number URIs.

Constant Value: "tel"

SCHEME_VOICEMAIL

public static final String SCHEME_VOICEMAIL

URI scheme for voicemail URIs.

Constant Value: "voicemail"

Fields

CREATOR

public static final Creator<PhoneAccount> CREATOR

Public methods

builder

public static PhoneAccount.Builder builder (PhoneAccountHandle accountHandle, 
                CharSequence label)

Parameters
accountHandle PhoneAccountHandle

label CharSequence

Returns
PhoneAccount.Builder

describeContents

public int describeContents ()

Describe the kinds of special objects contained in this Parcelable instance's marshaled representation. For example, if the object will include a file descriptor in the output of writeToParcel(android.os.Parcel, int), the return value of this method must include the CONTENTS_FILE_DESCRIPTOR bit.

Returns
int a bitmask indicating the set of special object types marshaled by this Parcelable object instance. Value is either 0 or CONTENTS_FILE_DESCRIPTOR

equals

public boolean equals (Object o)

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

The equals method for class Object implements the most discriminating possible equivalence relation on objects; that is, for any non-null reference values x and y, this method returns true if and only if x and y refer to the same object (x == y has the value true).

Note that it is generally necessary to override the hashCode method whenever this method is overridden, so as to maintain the general contract for the hashCode method, which states that equal objects must have equal hash codes.

Parameters
o Object: the reference object with which to compare.

Returns
boolean true if this object is the same as the obj argument; false otherwise.

getAccountHandle

public PhoneAccountHandle getAccountHandle ()

The unique identifier of this PhoneAccount.

Returns
PhoneAccountHandle A PhoneAccountHandle.

getAddress

public Uri getAddress ()

The address (e.g., a phone number) associated with this PhoneAccount. This represents the destination from which outgoing calls using this PhoneAccount will appear to come, if applicable, and the destination to which incoming calls using this PhoneAccount may be addressed.

Returns
Uri A address expressed as a Uri, for example, a phone number.

getCapabilities

public int getCapabilities ()

The capabilities of this PhoneAccount.

Returns
int A bit field of flags describing this PhoneAccount's capabilities.

getExtras

public Bundle getExtras ()

The extras associated with this PhoneAccount.

A ConnectionService may provide implementation specific information about the PhoneAccount via the extras.

Returns
Bundle The extras.

getHighlightColor

public int getHighlightColor ()

A highlight color to use in displaying information about this PhoneAccount.

Returns
int A hexadecimal color value.

getIcon

public Icon getIcon ()

The icon to represent this PhoneAccount.

Returns
Icon The icon.

getLabel

public CharSequence getLabel ()

A short label describing a PhoneAccount.

Returns
CharSequence A label for this PhoneAccount.

getShortDescription

public CharSequence getShortDescription ()

A short paragraph describing this PhoneAccount.

Returns
CharSequence A description for this PhoneAccount.

getSubscriptionAddress

public Uri getSubscriptionAddress ()

The raw callback number used for this PhoneAccount, as distinct from getAddress(). For the majority of PhoneAccounts this should be registered as null. It is used by the system for SIM-based PhoneAccount registration where TelephonyManager.setLine1NumberForDisplay(String, String) has been used to alter the callback number.

Returns
Uri The subscription number, suitable for display to the user.

getSupportedUriSchemes

public List<String> getSupportedUriSchemes ()

The URI schemes supported by this PhoneAccount.

Returns
List<String> The URI schemes.

hasCapabilities

public boolean hasCapabilities (int capability)

Determines if this PhoneAccount has a capabilities specified by the passed in bit mask.

Parameters
capability int: The capabilities to check.

Returns
boolean true if the phone account has the capability.

hashCode

public int hashCode ()

Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by HashMap.

The general contract of hashCode is:

  • Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
  • If two objects are equal according to the equals(Object) method, then calling the hashCode method on each of the two objects must produce the same integer result.
  • It is not required that if two objects are unequal according to the equals(java.lang.Object) method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.

As much as is reasonably practical, the hashCode method defined by class Object does return distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer, but this implementation technique is not required by the Java™ programming language.)

Returns
int a hash code value for this object.

isEnabled

public boolean isEnabled ()

Indicates whether the user has enabled this PhoneAccount or not. This value is only populated for PhoneAccounts returned by TelecomManager#getPhoneAccount.

Returns
boolean true if the account is enabled by the user, false otherwise.

supportsUriScheme

public boolean supportsUriScheme (String uriScheme)

Determines if the PhoneAccount supports calls to/from addresses with a specified URI scheme.

Parameters
uriScheme String: The URI scheme to check.

Returns
boolean true if the PhoneAccount supports calls to/from addresses with the specified URI scheme.

toBuilder

public PhoneAccount.Builder toBuilder ()

Returns a builder initialized with the current PhoneAccount instance.

Returns
PhoneAccount.Builder The builder.

toString

public String toString ()

Returns a string representation of the object. In general, the toString method returns a string that "textually represents" this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method.

The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@', and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of:

 getClass().getName() + '@' + Integer.toHexString(hashCode())
 

Returns
String a string representation of the object.

writeToParcel

public void writeToParcel (Parcel out, 
                int flags)

Flatten this object in to a Parcel.

Parameters
out Parcel: The Parcel in which the object should be written.

flags int: Additional flags about how the object should be written. May be 0 or Parcelable.PARCELABLE_WRITE_RETURN_VALUE. Value is either 0 or a combination of Parcelable.PARCELABLE_WRITE_RETURN_VALUE, and android.os.Parcelable.PARCELABLE_ELIDE_DUPLICATES