Skip to content

Phone Calls

Receive Phone Calls and Notify Incoming Phone Calls

Register for Incoming Phone Call notifications.

ℹ️ In order to handle the phone calls, you have to create a PhoneCallProvider

Method Details
PhoneCallProvider.create(Context context) Creates the PhoneCallProvider for the given context
1
val provider = PhoneCallProvider.create(context)

And register a listener to it

Method Details
subscribe(PhoneCallStatusListener listener,PhoneCallTopic topic) Register the listener for receiving phone call updates regarding the specified topic

1
provider.providePublisher().subscribe(phoneCallListener, PhoneCallTopic.ANY)
Once a call is received, the 'onCallStatusUpdate' callback will be notified.

Interact with Phone Calls

Accept, Reject

Functionalities is available in 'IncomingPhoneCallActionManager', retrieved from the 'provider' instance.

ℹ️ Retrieve the [IncomingCallManager] for accept and reject

1
val incomingCallManager = provider.provideIncomingCallActionManager()

Method Details
accept(String callId) Accept the incoming call with the specified callId
reject(String callId) Reject the incoming call with the specified callId
rejectWithMessage(String callId,String message) Reject the incoming call with the specified callId and send a message to the caller. Throws IllegalArgumentException - if an empty callId or message is passed

Hold, Mute, End

This functionality is available in 'OngoingPhoneCallActionManager', retrieved from the 'provider' instance.

ℹ️ Retrieve the 'OngoingPhoneCallActionManager' and use it to act upon the ongoing call: end, mute, unmute, hold, untold etc

1
val ongoingCallManager = provider.provideOngoingCallActionManager()

Method Details
hold(String callId) Put the ongoing call with the specified callId on hold. Throws IllegalArgumentException - if an empty callId is passed
unhold(String callId) Get back into the call with the specified callId. Throws IllegalArgumentException - if an empty callId is passed
mute() Mute the microphone for the current call
unmute() Unmute the microphone for the current call
end() Terminate the call with the specified callId
playDtmf(String callId,Char digit) For the call specified by calldId, play the DTMF tone corresponding to the given digit

Make a Phone Call

ℹ️ In order to make phone calls, you have to create a PhoneCallDialerProvider and get a PhoneCallDialer instance from it

1
val phoneCallDialerProvider = PhoneCallDialerProvider.Factory.create(this).provideDialer()
Method Details
dial(String number) Dial the specified phone number
dial(Contact contact) Dial the specified contact
dial(Contact contact,Integer numberType) Dial the specified contact on the number corresponding to the numberType (Home, Work)

ℹ️ All dial methods return a PhoneCallResult.Success if the dial was successful, and PhoneCallResult.Error otherwise

View the Call History

1
2
3
4
5
// Create a phone calls history data access object
val dataAccess = PhoneCallsHistoryDataAccess.Factory().createDataAccess(
    context.contentResolver,
    PhoneCallsHistoryDataAccess.DataAccessType.BASE
)
To query the dataAccess, its find method has to be called

Method Details
find(Query.Builder queryBuilder) Returns a list of HistoryRecord filtered as speicified by the queryBuilder

The available query types for the Query.Builder() are as follows

Method Details
full() Filter for full history data
answered() Filter for answered calls
missed() Filter for missed calls
outgoing() Filter for made calls
rejected() Filter for rejected calls
since(Date date) Filter the call history since the given date

The queries can also be combined, for example:

1
2
// Filter for reading history since the @date filtered by outgoing and missed calls
val queryBuilder = Query.Builder().since(date).outgoing().missed()

Clear Phone Calls History

Info

Not yet implemented